我想从子类中调用父类的方法。
代码如下:
#include "stdio.h"
class Parent;
typedef void (Parent::*fff)(void);
// Attribute class
class Child {
public:
Child( fff ftp );
void (Parent::*fptr)(void);
void update();
};
Child::Child( fff ftp )
{
fptr = ftp;
}
void Child::update()
{
(this->*fptr)(); // fail and I don't know the correct syntax
printf("update done\n");
}
// Top class
class Parent {
public:
Parent();
Child child;
void foo();
};
Parent::Parent():
child( &Parent::foo )
{
(this->*child.fptr)(); // works and print "foo"
}
void Parent::foo()
{
printf("foo\n");
}
int main()
{
Parent parent;
parent.child.update();
}
此代码失败。我收到以下错误:“错误:指向成员类型'void(Parent ::)()'的指针与对象类型'Child'不兼容”
这也许很明显,但是我找不到正确的语法。有什么想法吗?