功能指针向量到不同的类

时间:2015-05-05 23:02:04

标签: c++ vector interface function-pointers

我有一个函数指针的typedef:

typedef int(interface1::*getInfoInterface1_t)(void);

然后是这些函数指针的向量:

std::vector<getInfoInterface1_t>

我想重用我已创建的这个类,但每个实例都实现了一个不同的虚拟接口类。如果该类不匹配,则指针将不匹配。

由于我还没有能够解决这个问题,我很遗憾地制作了这个类的精确副本,除了typedef和vector之外都是相同的。

能够拥有不同的功能签名也很高兴。

有解决方法吗?

1 个答案:

答案 0 :(得分:0)

只需创建一个类模板,其中您保持指向的类是模板参数:

template  <typename Cls>
class Foo {
    typedef int(Cls::*getInfoInterface1_t)(void);
    std::vector<getInfoInterface1_t> ifcs;
    // ...
};

这样,对于每个类类型,您只需选择正确的模板:

Foo<interface1> your_original_version;