C ++:从属性类中调用顶级方法

时间:2018-09-14 23:59:31

标签: c++

我想从子类中调用父类的方法。

代码如下:

#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'不兼容”

这也许很明显,但是我找不到正确的语法。有什么想法吗?

0 个答案:

没有答案