无效转换为'int'到'int *'[-fpermissive]

时间:2015-10-16 18:48:27

标签: c++ c++11

我有以下代码:

#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

编辑:添加了整个源代码而不是代码段。尝试在不同的环境中但遇到相同的编译错误。

2 个答案:

答案 0 :(得分:2)

您发布的代码正确编译。

尽量不要使用指针:

int smallest(const Point& p, int value)
{
  return 0;
}

int main(void)
{
  int test = 15;
  Point p;
  smallest(p, test);
  return EXIT_SUCCESS;
}

答案 1 :(得分:1)

首先:

#define n argv[2]

第二

int smallest(Point* p, int n);

第三

int test;

第四:

smallest(p, test);

我不知道为什么你需要这个定义,但肯定是他造成这种奇怪的行为。