他のクラスの関数を実行するクラスを作成したいと思います。クラス A と名付けましょう。したがって、この A クラスとクラス A からクラスを継承して、派生クラスから関数アドレスを受け取り、それらを実行できるようにしたいと考えています。
これは私がこれまでに考えたことです:
#include <iostream>
using namespace std;
template <class T>
class A
{
public:
// a typedef for the function I want to execute
// which has no parameters and void as return type
typedef void (T::*SpecialFunc)();
A() { }
//this is the function that executes the received functions
void exec(SpecialFunc func)
{
((new T)->*func)();
}
};
class B : public A<B>
{
public:
B()
{
// call A::exec to call my function
exec(&B::funcB);
}
//function I want to be executed
void funcB()
{
cout << "testB\n";
}
};
int main()
{
B ob;
return 0;
}
私が欲しいのは、関数 funcB が呼び出されることです。これまでのところ、私のプログラムはエラーなしで壊れていますが、ひどく壊れています。クラス B からの情報を必要とするクラス A を構築しようとしており、クラス B は最初のクラス A からの情報を構築する必要があるため、このコードが機能しないことはわかっていますが、私が達成したいことをよりよく理解していただければ幸いです。
これは達成できますか?
ありがとうございました