我有一个函数指针的typedef:
typedef int(interface1::*getInfoInterface1_t)(void);
然后是这些函数指针的向量:
std::vector<getInfoInterface1_t>
我想重用我已创建的这个类,但每个实例都实现了一个不同的虚拟接口类。如果该类不匹配,则指针将不匹配。
由于我还没有能够解决这个问题,我很遗憾地制作了这个类的精确副本,除了typedef和vector之外都是相同的。
能够拥有不同的功能签名也很高兴。
有解决方法吗?
答案 0 :(得分:0)
只需创建一个类模板,其中您保持指向的类是模板参数:
template <typename Cls>
class Foo {
typedef int(Cls::*getInfoInterface1_t)(void);
std::vector<getInfoInterface1_t> ifcs;
// ...
};
这样,对于每个类类型,您只需选择正确的模板:
Foo<interface1> your_original_version;