提问人:user23167 提问时间:9/29/2008 更新时间:9/29/2008 访问量:4984
指向模板类成员函数的函数指针
Function pointer to template class member functions
问:
我有一个模板化类(部分)定义为
template <class T> MyClass
{
public:
void DoSomething(){}
};
如果我想从另一个类调用 DoSomething,但能够在同一位置对多个“T”类型执行此操作,那么我就陷入了一个想法,因为方法函数指针是唯一限制到类类型的。当然,每个 MyClass 都是不同的类型,因此我不能以“多态”方式存储指向 MyClassDoSomething() 的函数指针。
我的用例是我想在一个持有类中存储一个指向“DoSomething”的函数指针向量,这样我就可以从一个地方发出对所有存储类的调用。
有人有什么建议吗?
答:
13赞
Evan Teran
9/29/2008
#1
好的,所以函子解决方案不能按您需要的方式工作。也许你应该让你的模板类继承自一个公共的基“接口”类。然后你使用这些向量。
像这样的东西:
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>);
0赞
user23167
9/29/2008
#2
你知道,这正是我需要做的。 Bizzarly,我很早就把它当作一个对我的用例有效的解决方案,原因现在我逃避了。我想我被我在同一个地方为编译时调度所做的一些元编程工作蒙蔽了双眼(即在我迷茫的大脑中混淆了编译时和运行时)。
谢谢你的颠簸!
评论