Привет, я использую 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;
}
Позже я хочу перебрать все объекты с помощью al oop, и вызвать соответствующую функцию, иногда метод объекта, а иногда и обычную функцию.
Это возвращает ошибку: ISO C ++ запрещает использование адреса связанной функции-члена для формирования указателя на функцию-член. Скажите '& Object :: someFunction' [-fpermissive]