从 int 到 int 的无效转换** C++

Posted

技术标签:

【中文标题】从 int 到 int 的无效转换** C++【英文标题】:Invalid conversion from int to int** C++ 【发布时间】:2010-04-20 19:09:53 【问题描述】:

不知道为什么我会收到此错误。我有以下内容:

int* arr = new int[25];

int* foo()
   int* i;
   cout << "Enter an integer:";
   cin >> *i;
   return i;


void test(int** myInt)
   *myInt = foo();


This call here is where I get the error:

test(arr[0]);   //here i get invalid conversion from int to int**

【问题讨论】:

这不是编译错误的根源,但您在 'foo()' 中有一个逻辑错误 - 您声明了一个指针但从未初始化它。当您执行该功能时,它(很可能)会崩溃。 希望它会崩溃。它可能不会,这会更糟。未初始化的指针 == baaaaad. 我去掉了关于函数指针和成员指针的标签;你的问题只是关于数据指针。 【参考方案1】:

按照您的编写方式,test 采用指向 int 的指针,但 arr[0] 只是 int

但是,在foo 中,您提示输入int,但读取的位置是未初始化指针的值。我原以为你想让foo 阅读并返回,而int

例如

int foo() 
   int i;
   cout << "Enter an integer:";
   cin >> i;
   return i;

在这种情况下,test 将指针指向 int(即void test(int* myInt))是有意义的。

然后您可以将指针传递给您动态分配的int 之一。

test(&arr[0]);

【讨论】:

以上是关于从 int 到 int 的无效转换** C++的主要内容,如果未能解决你的问题,请参考以下文章

从 int 到 int 的无效转换*

C - “从“int*”到“int”的无效转换

从 'System.Int32' 到 'System.Nullable`1[[System.Int32, mscorlib]] 的无效转换

从 'int' 到 'const char*' 的无效转换 [-fpermissive]| (初学者)

我从 g++ 编译器收到此错误 - 从“int*”到“int”的无效转换 [-fpermissive]

从具体化的“System.Int32”类型到“System.Int64”类型的指定转换无效