Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 指向不同类的函数指针向量_C++_Vector_Interface_Function Pointers - Fatal编程技术网

C++ 指向不同类的函数指针向量

C++ 指向不同类的函数指针向量,c++,vector,interface,function-pointers,C++,Vector,Interface,Function Pointers,我有一个函数指针的typedef: typedef int(interface1::*getInfoInterface1_t)(void); 然后是这些函数指针的向量: std::vector<getInfoInterface1_t> std::vector 我想重用我创建的这个类,但是每个实例实现一个不同的虚拟接口类。如果类不匹配,指针将不匹配 由于我还没有弄明白这一点,很不幸,我制作了这个类的精确副本,除了typedef和vector之外,其他都是相同的 如果能够有不同的函

我有一个函数指针的typedef:

typedef int(interface1::*getInfoInterface1_t)(void);
然后是这些函数指针的向量:

std::vector<getInfoInterface1_t>
std::vector 我想重用我创建的这个类,但是每个实例实现一个不同的虚拟接口类。如果类不匹配,指针将不匹配

由于我还没有弄明白这一点,很不幸,我制作了这个类的精确副本,除了typedef和vector之外,其他都是相同的

如果能够有不同的函数签名,那就太好了


有办法解决这个问题吗?

只需制作一个类模板,其中保留指针的类是一个模板参数:

template  <typename Cls>
class Foo {
    typedef int(Cls::*getInfoInterface1_t)(void);
    std::vector<getInfoInterface1_t> ifcs;
    // ...
};
模板
福班{
typedef int(Cls::*getInfoInterface1_t)(无效);
病媒综合征;
// ...
};
这样,对于每个类类型,您只需选择正确的模板:

Foo<interface1> your_original_version;
Foo您的原始版本;

在这里,您可能需要阅读有关名称空间和名称空间的内容。你的意思是指向不同阶层的成员吗?@Barry-是的,这就是我想做的。