我想创建一个类,我们将其命名为 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 类的信息来构建,但我希望你能更好地理解我愿意实现的目标。
这可以实现吗?
谢谢