问题描述
||
当我尝试以下程序时,它给了我:error C2064:我在google中尝试过,但找不到确切的原因。请帮忙。
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;
};
解决方法
您是否想像函数一样调用
myClass
类型的对象?为此,您需要使operator()
重载:
void operator()(myClass dTemp){
// ...
}
如果您想调用该函数,那么实际上应该这样做:
myClassTemp.function(myClassTemp1);
, 调用时应包括函数名称。
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;
};
, 这应该是
// vvvvvvvv
myClassTemp.function(myClassTemp1);