错误 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&lt;int&gt; 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

error C2664: “CreateFileW”: 不能将参数 1 从“char *”转换为“LPCWSTR”

无法将参数 1 从 int 转换为 int && 错误 [重复]