2014-03-03 68 views
0
#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]; 
    }; 
}; 

主:错误C2664:无法从 '诠释' 转换参数1到 'INT []'

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:“阿明:: deleteEvenNumber':无法将参数1从'int'转换为'int []'

  2. 智能感知:类型为“int”的参数与参数不兼容类型“int *”

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

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

+0

我会用'的std :: VECTOR'而不是阵列。 – Nick

回答

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

或者,您可以使用取而代之的是,然后你可以通过mainArray.size()轻松获得它的长度。

+0

“长度”呢?它不会编译... – Nick

+1

@Nick固定。谢谢。 – herohuyongtao

+1

+1。很高兴看到提及'std :: vector'! – Nick

1

你的函数需要一个int[](阵列)作为参数

int deleteEvenNumber(int getArray[length]) 

但你传递一个int

manipulateArrays.deleteEvenNumber(mainArray[length]); 
相关问题