【问题标题】:error C2664: cannot convert parameter 1 from 'int' to 'int []'错误 C2664:无法将参数 1 从“int”转换为“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]);
};

我得到了这两个错误:

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

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

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

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

【问题讨论】:

  • 我会使用 std::vector 而不是数组。

标签: c++ casting


【解决方案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]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多