3

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

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

如果我想从另一个类调用 DoSomething,但能够在同一个地方对多个“T”类型执行此操作,我会坚持一个想法,因为方法函数指针唯一地受限于类类型。当然,每个 MyClass 都是不同的类型,所以我不能以“多态”方式存储指向 MyClassDoSomething() 的函数指针。

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

有人有什么建议吗?

4

2 回答 2

13

好的,所以仿函数解决方案不能按您的需要工作。也许您应该让您的模板类继承自一个通用的基础“接口”类。然后你使用这些向量。

像这样的东西:

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>);
于 2008-09-28T17:31:54.957 回答
0

你知道,这正是我需要做的。奇怪的是,我很早就将其视为对我的用例有效的解决方案,因为现在我无法理解。我想我被我在同一个地方为编译时调度所做的一些元编程工作蒙蔽了双眼(即在我昏昏欲睡的大脑中混淆了编译时间和运行时)。

谢谢你的震动!

于 2008-09-28T17:45:55.300 回答