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

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

如果我想要呼叫或重写现从另一类,但能够做到这一点为多个'T'类在同一个地方,我卡住了想法,作为方法的功能的指针是唯一制约的类型。当然,每个MyClass是一个不同的类型,所以我不能储存功能的指针MyClassDoSomething()中的'多态性'的方式。

我的使用情况是,我想存在一种保持类,矢量的函数的指针'或重写现有'这样的,我可以发出一个呼吁所有储存的类别从一个地方。

有任何人任何建议?

有帮助吗?

解决方案

Ok,这样的函子解决方案不起作用你需要。也许你应该有你的模板类继承的共同基地"接口"类。然后你使用一矢量的那些。

事情是这样的:

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>);

其他提示

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

感谢震撼!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top