功能指针向量指向不同类别

Vector of function pointers to different classes

本文关键字:同类 指针 向量 功能      更新时间:2023-10-16

我有一个功能指针的Typedef:

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

然后这些功能指针的向量:

std::vector<getInfoInterface1_t>

我想重复使用我创建的此类,但是每个实例都实现了不同的虚拟接口类。如果类不匹配,则指针将具有不匹配。

由于我无法弄清楚这一点,但不幸的是,我做了此类的确切副本,除了typedef和vector。

也能拥有不同的功能签名。

有办法解决吗?

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

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

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

Foo<interface1> your_original_version;