指向模板类成员函数的函数指针

时间: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早就放弃了它作为对我的用例有效的解决方案,原因是现在可以逃避我的原因了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。我想我对在同一地方进行编译时分派的一些元编程工作视而不见(即,我的大脑混乱了编译时间和运行时)。

感谢参与!