指向模板类成员函数的函数指针
时间:2020-03-06 14:50:54 来源:igfitidea点击:
我有一个模板化的类定义(部分)为
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早就放弃了它作为对我的用例有效的解决方案,原因是现在可以逃避我的原因了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我想我对在同一地方进行编译时分派的一些元编程工作视而不见(即,我的大脑混乱了编译时间和运行时)。
感谢参与!