0

クラス B の子であるクラス A があります。クラス B のすべての子には、クラスがコンパイルされた後に別のファイルの外部関数によって変更可能なクラスを処理するための関数への関数ポインターが必要です。クラス A のすべてのインスタンスは 1 つの関数を指し、B のすべてのインスタンスは関数を指す必要がありますが、A と B は異なる関数を指すことができる必要があります。これどうやってするの?静的関数ポインターとプライベート静的関数ポインターを試しましたが、どちらも機能しませんでした。

class B{
    public:
    static void (* func)();
}
class A : public B{

}
class C : public B{

}
void funcA(){
    cout<<"A"<<endl;
}
void funcB(){
    cout<<"B"<<endl;
}
void funcC(){
    cout<<"C"<<endl;
}
void main(){
    B b=B();
    B b2=B();
    B a=A();
    B a2=A();
    B c=C();
    B c2=C();
    b.func=funcB;
    a.func=funcA;
    c.func=funcC;
    a.func();
    b.func();
    c.func();
    a2.func();
    b2.func();
    c2.func();
}

私の望む出力は

B
A
C
B
A
C
4

1 に答える 1