我想创建一个类,它具有指向其方法之一作为属性的指针.然后应该有一个方法,用于设置此指针.
class A {
private:
void (A::*curr_f)();
public:
void set(void (A::*f)()) {
curr_f = f;
}
};
Run Code Online (Sandbox Code Playgroud)
当我尝试创建继承的类并将指针设置为其方法之一时,问题就开始了.
class B : A {
public:
void main() {
set(&B::new_function);
};
void new_function() {};
};
Run Code Online (Sandbox Code Playgroud)
我得到的错误非常简单,但我仍然不知道如何解决这个问题.
error: no matching function for call to ‘B::set(void (B::*)())’
note: candidate is:
note: void A::set(void (A::*)())
note: no known conversion for argument 1 from ‘void (B::*)()’ to ‘void (A::*)()’
Run Code Online (Sandbox Code Playgroud)