函数指针模板类成员函数
问题描述:
我已经定义(部分)一个模板类为函数指针模板类成员函数
template <class T> MyClass
{
public:
void DoSomething(){}
};
如果我想从另一个类调用DoSomething的,但能够为多个“T”型做到这一点在同一个地方,我坚持一个想法,因为方法函数指针是唯一受限于类类型的。当然,每个MyClass都是不同的类型,所以我不能以“多态”的方式将函数指针存储到MyClassDoSomething()中。
我的用例是我想在一个持有类中存储一个向“DoSomething”的函数指针向量,这样我就可以从一个地方向所有存储的类发出调用。
有没有人有任何建议?
答
好吧,所以仿函数解决方案不能按需要工作。也许你应该让你的模板类从一个共同的基础“接口”类继承。然后你使用这些矢量。
事情是这样的:
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早在我的用例中,我已经将它作为一个有效的解决方案予以打折,因为现在逃脱了我的原因。我认为我在编译时调度的同一个地方(即编译时间和运行时间混乱的脑子里)编译了一些元编程的东西。
非常感谢您的支持!