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

Function pointer to template class member functions

本文关键字:函数 指针 成员      更新时间:2023-10-16

我有一个模板化类(部分)定义为

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>);

你知道,这正是我需要做的。 奇怪的是,我很早就将其视为对我的用例有效的解决方案,原因现在我忘记了。我想我被我在同一个地方为编译时调度所做的一些元编程工作蒙蔽了双眼(即在我混乱的大脑中混淆了编译时间和运行时)。

谢谢你的震动!