我有一个模板类定义(部分)为
template <class T> MyClass
{
public:
void DoSomething(){}
};
如果我想从另一个类调用 DoSomething,但能够在同一位置为多个 'T' 类型执行此操作,我会陷入一个想法,因为方法函数指针被唯一地约束到类类型。当然,每个 MyClass 都是不同的类型,所以我不能以“多态”方式存储指向 MyClassDoSomething() 的函数指针。
我的用例是我想在一个持有类中存储一个指向“DoSomething”的函数指针 vector ,这样我就可以从一个地方发出对所有存储类的调用。
有人有什么建议吗?
最佳答案
好的,所以仿函数解决方案无法按您的需要工作。也许你应该让你的模板类从一个公共(public)的基“接口(interface)”类继承。然后你使用这些 vector 。
像这样的东西:
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>);
关于c++ - 指向模板类成员函数的函数指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/146275/