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

时间:2014-03-03 15:13:50

标签: 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];
    };
};

主:

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]);
};

我遇到了这两个错误:

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

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

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

    请向我介绍这个问题或这个标题的好教程。

2 个答案:

答案 0 :(得分:5)

您的函数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()获取其长度。

答案 1 :(得分:1)

你的函数将int[](数组)作为参数

int deleteEvenNumber(int getArray[length])

但你传递的是int

manipulateArrays.deleteEvenNumber(mainArray[length]);