从 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++的主要内容,如果未能解决你的问题,请参考以下文章
从 'System.Int32' 到 'System.Nullable`1[[System.Int32, mscorlib]] 的无效转换
从 'int' 到 'const char*' 的无效转换 [-fpermissive]| (初学者)