【发布时间】:2020-08-22 16:02:55
【问题描述】:
您好,我在 C++ 中,我想将一个对象的方法传递给同一类的另一个对象:
class Object{
public:
int id;
int newId;
Object(int _id){
id = _id;
};
int (*function)();
int someFunction(){
return id*2;
};
void updateFunction(){
newId = function();
}
};
int someOtherFuntion(){
return 3;
}
int main(){
Object* obj[2];
obj[0] = new Object(1);
obj[1] = new Object(2);
//next line is where the error happens
obj[0]->function = &obj[1]->someFunction;
obj[1]->function = &someOtherFuntion;
for(int i = 0; i<2; i++){
obj[i]->updateFunction();
}
return 1;
}
稍后,我想用循环遍历所有对象,并调用相应的函数,有时是对象方法,有时是常规函数。
这会返回错误:ISO C++ 禁止使用绑定成员函数的地址来形成指向成员函数的指针。说‘&Object::someFunction’ [-fpermissive]
【问题讨论】:
-
会这样吗?当你尝试时发生了什么?
-
请出示真实代码。您缺少
;和main必须返回int。同样在您的示例中,它与调用该方法的对象无关。你到底想达到什么目的?
标签: c++ class pointers methods