模板子类中的重载方法

时间:2017-10-01 13:42:20

标签: c++ templates inheritance function-pointers

我有以下场景:

我有一个看起来像这样的孩子班:

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) {}
}

0 个答案:

没有答案