错误C2664:无法将参数1从'int'转换为'int []'

Ami*_*aei 0 c++ casting

#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];
    };
};
Run Code Online (Sandbox Code Playgroud)

主要:

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]);
};
Run Code Online (Sandbox Code Playgroud)

我有这两个错误:

  1. 错误C2664:'amin :: deleteEvenNumber':无法将参数1从'int'转换为'int []'

  2. IntelliSense:类型"int"的参数与"int*"类型的参数不兼容

请帮助并向我解释我的错误.

请向我介绍一个关于这个问题或这个标题的好教程.

her*_*tao 5

你的函数deleteEvenNumber()需要一个int [](即int数组),但你把它传递int给它.

manipulateArrays.deleteEvenNumber(mainArray[length]);
                                  ^^^^^^^^^^^^^^^^^
                                         |
                            this is an 'int', not an 'int []'
Run Code Online (Sandbox Code Playgroud)

要传递length给函数,您可能希望将函数更改为

int deleteEvenNumber(int getArray[], int length)
Run Code Online (Sandbox Code Playgroud)

然后把它称为:

manipulateArrays.deleteEvenNumber(mainArray, length);
Run Code Online (Sandbox Code Playgroud)

或者,你可以使用vector<int> mainArray,然后你可以很容易地得到它的长度mainArray.size().