错误 C2664:无法将参数 1 从“int”转换为“int []”
Posted
技术标签:
【中文标题】错误 C2664:无法将参数 1 从“int”转换为“int []”【英文标题】:error C2664: cannot convert parameter 1 from 'int' to 'int []' 【发布时间】:2014-03-03 15:13:49 【问题描述】:#include <iostream>
using namespace std;
class amin
private:
const int length = 10;
int newArray[length];
int i;
public:
int deleteEvenNumber(int getArray[length])
for (i = 0 ; i < length ; i++)
if (getArray[i] % 2 == 0)
newArray[i] = getArray[i];
i++;
;
return newArray[length];
;
;
主要:
int main()
amin manipulateArrays;
int input , i = 0;
const int length = 10;
int mainArray[length];
cout<<"Please enter ten numbers :"<<endl;
for (i = 0 ; i < length ; i++)
cin>>input;
mainArray[i] = input;
i++;
;
manipulateArrays.deleteEvenNumber(mainArray[length]);
;
我得到了这两个错误:
错误 C2664:“amin::deleteEvenNumber”:无法将参数 1 从“int”转换为“int []”
IntelliSense:“int”类型的参数与“int *”类型的参数不兼容
请帮助并向我解释我的错误。
请给我介绍一个关于这个问题或这个标题的好教程。
【问题讨论】:
我会使用std::vector
而不是数组。
【参考方案1】:
您的函数deleteEvenNumber()
需要int []
(即int
数组),但是您将int
传递给它。
manipulateArrays.deleteEvenNumber(mainArray[length]);
^^^^^^^^^^^^^^^^^
|
this is an 'int', not an 'int []'
要将length
也传递给函数,您可能需要将函数更改为
int deleteEvenNumber(int getArray[], int length)
然后这样称呼它:
manipulateArrays.deleteEvenNumber(mainArray, length);
或者,您可以使用vector<int> mainArray
代替,然后您可以通过mainArray.size()
轻松获取其长度。
【讨论】:
【参考方案2】:您的函数将int[]
(array) 作为参数
int deleteEvenNumber(int getArray[length])
但你传递的是int
manipulateArrays.deleteEvenNumber(mainArray[length]);
【讨论】:
以上是关于错误 C2664:无法将参数 1 从“int”转换为“int []”的主要内容,如果未能解决你的问题,请参考以下文章
error C2664: “int CWnd::MessageBoxW(LPCTSTR,LPCTSTR,UINT)”: 无法将参数 1 从“const char [9]”转换为“LPCTSTR”
错误 C2664:“SQLGetData”:无法将参数 6 从“SDWORD *”转换为“SQLLEN *”
错误 C2664:无法将参数 2 从 'const ATL::CAdapt<ATL::CComPtr<IZipFileEntry>> *' 转换为 'ATL::CAdapt&l
error C2664: “int CWnd::GetWindowTextW(LPTSTR,int) const”: 不能将参数 1 从“char [10]”转换为“LP