我有以下场景:
我有一个看起来像这样的孩子班:
template <typename T>
class Child : public AbstractBase {
virtual void Test(T *obj, void (T::*ptr)(int)) {
(*obj.*ptr)(5);
}
}
基类看起来像这样:
class AbstractBase {
virtual void Test(T*, ??) = 0;
}
有没有办法填充 ?? ,所以我可以覆盖我的Child类中的方法?
我最不想做的是将大量 Child 对象存储在一个列表中(list&lt; AbstractBase *&gt;),但是使用不同的类型(不同的Ts)。
使用该类将如下所示:
#include "Child.h"
class A {
A() {
AbstractBase *ab = new Child<A>();
ab->Test(this, &A::foo);
}
void foo(int a) {}
}