参考错误

时间:2012-04-18 16:08:15

标签: c++ reference

我有一个标题,我在其中声明了一个函数。然后我创建该函数并尝试使用它,但我得到一个错误。这是参考,但我不知道为什么它不工作。

struct.h

#ifndef LISTSTRUC_H_
#define LISTSTRUC_H_


template <class T> struct Array{
    int days;
    T * M;

Array( int size ) : days(size), M(new T[size])
{
}
~Array()
{
   delete[] M;
}
};

void currentDay();

template <class Expe>
void dummyData(Array<Expe> &);

#endif /* LISTSTRUC_H_ */

struct.cpp

void dummyData(Array <Expe> &A){
for(int i=0; i<31; i++){
    A.M[i].Expe::setObj((i*3),(i*1),(i*6),(i*2),(i*4),(i*5));
}
 }

M.cpp(主要cpp)

int main(){
//Main function of the program. no pre/ post condition.

    Array <Expe> A(31);   // Work space
    Array <Expe> B(31);   // Backup space

    dummyData(&A);         // error
 }

ERROR:

..\M.cpp:22:14: error: no matching function for call to 'dummyData(Array<Expe>*)'

4 个答案:

答案 0 :(得分:4)

dummyData(&A);

应该是:

dummyData(A); 

<强>理由:
你的函数接受引用而不是指针,&A表示你传递的类型的地址只能通过指向该类型的指针接收,并且你没有该函数的重载版本,因此错误

答案 1 :(得分:2)

如果通过引用传递对象,请不要像在此处那样传递其地址:

dummyData(&A); 

只需传递对象本身(作为参考是别名):

dummyData(A); 

答案 2 :(得分:1)

您不应该通过引用传递引用&来传递变量,只需传递它即可。

dummyData(A);

通过引用传递意味着您没有复制对象,而是使用对象本身,如果作为变量传递(不是const),更改将影响它。

答案 3 :(得分:1)

dummyData(&A);    

应该是

dummyData(A);

此上下文中的&运算符采用A的地址作为指针。要传递引用,只需使用实际的变量名称。