2011-06-12 49 views
0

当我尝试下面的程序时,它给了我:错误C2064:我尝试了谷歌,但无法找到确切的原因。请帮忙。错误C2064:术语不会评估为采用1个参数的函数

class myClass 
{ 
    public: 
     void function(myClass dTemp) 
     { 
      cout<<"Inside myClass: taking myClass parameter"<<endl; 
     } 
}; 

int main() 
{ 

    myClass myClassTemp; 
    myClass myClassTemp1; 

    myClassTemp(myClassTemp1);// error C2064: term does not evaluate to a function taking 1 argument. 

return 0; 
}; 
+2

听编译器,它会告诉你没有函数调用 – 2011-06-12 08:55:51

回答

5

您的意思是能够调用的功能等myClass类型的对象?你需要重载operator()为:

void operator()(myClass dTemp){ 
    // ... 
} 

如果你不是想调用的函数,那么,你实际上应该这样做:

myClassTemp.function(myClassTemp1); 
+0

这真的是我的错误..我的意图是调用函数(myClassTemp1)。 OOOPssss !!!! – vrbilgi 2011-06-12 09:19:21

3

这应该是

//   vvvvvvvv 
myClassTemp.function(myClassTemp1); 
5

调用时,应当包括你的函数名。

myClassTemp.function(myClassTemp1) 

或者,如果您的目的是仿函数对象做到这一点下面的方式:

class myClass 
{ 
    public: 
     void operator() (myClass dTemp) 
     { 
      cout<<"Inside myClass: taking myClass parameter"<<endl; 
     } 
}; 

. 
int main() 
{ 

    myClass myClassTemp; 
    myClass myClassTemp1; 

    myClassTemp(myClassTemp1); 

return 0; 
}; 
+0

您应该删除错误评论。 :) – Xeo 2011-06-12 08:56:51

+0

@Xeo:你说得对,修好了。 – 2011-06-12 08:57:45

相关问题