加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 10:15:13 所属栏目:百科 来源:网络整理
导读:我有一个模板化的类(部分)定义为 template class T MyClass{public: void DoSomething(){}}; 如果我想从另一个类调用DoSomething,但是能够在同一个地方为多个’T’类型执行此操作,我会因为方法函数指针被唯一地约束到类类型而陷入困境.当然,每个MyClass都是
我有一个模板化的类(部分)定义为

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

如果我想从另一个类调用DoSomething,但是能够在同一个地方为多个’T’类型执行此操作,我会因为方法函数指针被唯一地约束到类类型而陷入困境.当然,每个MyClass都是不同的类型,所以我不能以’多态’的方式存储MyClassDoSomething()的函数指针.

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

有人有什么建议吗?

解决方法

好的,所以functor解决方案无法正常工作.也许您应该让您的模板类继承自公共基础“Interface”类.然后你使用那??些矢量.

像这样的东西:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读