c++ - 可变参数模板 : One method per template argument

标签 c++ variadic-templates member-functions

有没有一种方法可以为每个可变参数模板参数自动创建一个方法?

例如,在下面的代码中,我想强制覆盖 class 中的 void x(a &v)void x(b &v):

#include <type_traits>
#include <stdlib.h>
#include <stdio.h>

class a {
};

class b {
};

template <typename ...T>
class t {
public:
    virtual void x(T &v) = 0;
};

class i : public t<a, b>
{
};

int
main (int argc, char *argv[])
{
    i ii;
    return 0;
}


最佳答案

您可以创建一个 t_impl 来保存单个 T 的虚拟函数,例如

template <typename T>
class t_impl
{
public:
    virtual void x(T &v) = 0;
};

然后t会继承它,就像

template <typename ...T>
class t : t_impl<T>... // can use public, protected or private inheritance
{
public:
    using t_impl<T>::x...; // used to import t_impl<T>::x into the public space
    // any additional common members
};

关于c++ - 可变参数模板 : One method per template argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64580758/

相关文章:

c++ - 复制和指针

c++ - 在 C++ 中一般比较继承层次结构中的对象

c++ - 如何从 URL 下载图像到本地目录?

c++ - 编译时类型的排列 P(N,R)

C++ 在非 const 指针函数中返回一个 const 指针

c++ - 如何使用非默认构造函数实例化模板类

c++ - 分配函数的数组版本

c++ - 成员函数从 main 更改对象而不是从其他函数更改对象

C++、模板或指向成员函数的指针

performance - c++为类成员函数分配lambda函数以提高计算效率