c++ - 指向模板类成员函数的函数指针

标签 c++ templates function member

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

template <class T> MyClass
{
public:
   void DoSomething(){}
};

如果我想从另一个类调用 DoSomething,但能够在同一个地方对多个“T”类型执行此操作,我就无法理解一个想法,因为方法函数指针被唯一地限制为类类型。当然,每个 MyClass 都是不同的类型,所以我不能以“多态”方式存储指向 MyClassDoSomething() 的函数指针。

我的用例是我想在一个持有类中存储一个指向“DoSomething”的函数指针 vector ,这样我就可以从一个地方发出对所有存储类的调用。

有人有什么建议吗?

最佳答案

好的,所以仿函数解决方案不能按您的需要工作。也许你应该让你的模板类继承自一个通用的“接口(interface)”基类。然后你使用这些 vector 。

像这样:

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

关于c++ - 指向模板类成员函数的函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/146275/

相关文章:

c++ - iOS - Xcode - OpenCV - findContours 错误

c++ - 定义的 `inline` 找不到用于特化的模板方法

php - onclick leads function leads increment 重置页面,value + 1

c++ - 当我在某些情况下使用模板参数时,编译器如何生成函数实例?

c++ - C++函数/方法设计的良好实践

c++ - reinterpret_cast/static_cast 和未定义的行为

c++ - 使用 GL_LINE_LOOP 绘制多个圆

c++ - 将 typedef 放置在使用类本身作为模板参数的类中是否有效?

javascript - Django:在部署时通过模板引擎呈现静态文件

C 传递数组的大小