我有一个模板化的类(部分)定义为
templateMyClass { public: void DoSomething(){} };
如果我想从另一个类调用DoSomething,但是能够在同一个地方为多个'T'类型执行此操作,我会因为方法函数指针被唯一地约束到类类型而陷入困境.当然,每个MyClass都是不同的类型,所以我不能以'多态'的方式存储MyClassDoSomething()的函数指针.
我的用例是我想在一个包含类中存储一个"DoSomething"函数指针向量,这样我就可以从一个地方发出对所有存储类的调用.
有人有什么建议吗?
好的,所以functor解决方案无法正常工作.也许您应该让您的模板类继承自公共基础"Interface"类.然后你使用那些矢量.
像这样的东西:
class Base { public: virtual ~Base(){} virtual void DoSomething() = 0; } templateclass MyClass : public Base { public: void DoSomething(){} }; std::vector objects; objects.push_back(new MyClass ); objects.push_back(new MyClass );