我有以下代碼:無效的轉換,從「詮釋」到「詮釋*」 [-fpermissive]
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#define initialSize 50
//Public GCC compiler-friendly macros
#define n argv[2]
using namespace std;
struct Point {
int x;
int y;
int z;
};
int smallest(Point* p, int n);
int size = 0, max_size = initialSize;
int *A = new int[max_size];
int main(int argc, char* argv[]) {
int test;
Point* p = new Point();
smallest(p, test);
return 0;
}
int smallest(Point *p, int n) {
return 0;
}
從我的理解,這應該是有效的語法C++。不過,我得到以下編譯錯誤:
test.cpp:32:20: error: invalid conversion from ‘int’ to ‘int*’ [-fpermissive]
test.cpp:23:5: error: initializing argument 2 of ‘int smallest(Point*, int*)’ [-fpermissive]
我使用命令:g++ -std=c++11 test.cpp
編輯:添加了完整的源代碼,而不是片段。嘗試在不同的環境,但遇到相同的編譯錯誤。
編譯器認爲'最小'採用'int *'作爲其第二個參數,而不是'int'。最有可能的是,這裏顯示的代碼實際上並不是實際編譯的代碼。你已經顯示的代碼[編譯沒有錯誤](http://rextester.com/OCA2667) –
不希望使用指針。聲明你的變量爲'Point p;'。這是C++語言,而不是C#或Java - 每個變量都不需要「新」。另外,考慮通過引用傳遞'Point'。 –
謝謝你的評論。 @IgorTandetnik爲什麼編譯器認爲第二個參數是int *指針,而不是int? – WCGPR0