mp09.c

来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 68 行

C
68
字号
#include "fail.h"

class Base {
    public:
        Base() {}
        virtual ~Base() {}
};

class A : public Base {
    public:
        A() {}
        ~A() {}

        virtual int OverriddenFunc( Base * ) = 0;
};

typedef int (A::*Callback)( Base * );

class Other : public Base {
    public:
        Other() {}
        ~Other() {}

        SetCallback( Callback func );

    private:
        Callback        _callback;
};

class B : public A {
    public:
        B() {}
        ~B() {}

        Register();

    private:
        Other           _other;
};

class C : public B {
    public:
        C() {}
        ~C() {}

        virtual int OverriddenFunc( Base * ) { return 0; }
};


B::Register()
/***********/
{
    _other.SetCallback( (Callback)OverriddenFunc );
}

Other::SetCallback( Callback func )
/*********************************/
{
    _callback = func;
}

int main() {
    C   c;

    c.Register();
    _PASS;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?