函数指针指向模板类成员函数

时间:2008-09-28 17:13:37

标签: c++ templates function member

我有一个模板化的类(部分)被定义为

template <class T> MyClass
{
public:
   void DoSomething(){}
};

如果我想从另一个类调用DoSomething,但是能够在同一个地方为多个'T'类型执行此操作,我会因为方法函数指针被唯一地约束到类类型而陷入困境。当然,每个MyClass都是不同的类型,所以我不能以'多态'的方式存储MyClassDoSomething()的函数指针。

我的用例是我想在一个包含类中存储一个“DoSomething”函数指针向量,这样我就可以从一个地方发出对所有存储类的调用。

有人有什么建议吗?

2 个答案:

答案 0 :(得分:12)

好的,所以functor解决方案无法正常工作。也许您应该让您的模板类继承自公共基础“Interface”类。然后你使用那​​些矢量。

这样的事情:

class Base { 
public:
  virtual ~Base(){}
  virtual void DoSomething() = 0;
}

template <class T> class MyClass : public Base {
public:
    void DoSomething(){}
};

std::vector<Base *> objects;
objects.push_back(new MyClass<int>);
objects.push_back(new MyClass<char>);

答案 1 :(得分:0)

你知道,这正是我需要做的。 Bizzarly我把它作为一个对我早期使用有效的解决方案打了折扣,原因现在让我感到厌烦。我认为我被一些元编程的东西蒙蔽了眼睛,我正在同一个地方进行编译时调度(即混淆了大脑中的编译时间和运行时)。

感谢震撼!