可变参数模板类中的多重继承&调用构造函数

时间:2015-02-01 15:14:15

标签: c++ class templates variadic

我们说我有这个例子:

//Two interfaces
class InterfaceA {
public:
    InterfaceA(int val);
};

class InterfaceB {
public:
    InterfaceB(int val);
};

//Class with multiple inheritance
template <typename... Intefaces>
class Base : public Interfaces... {
public:
    Base() : Interfaces(42) {}; // This is wrong
}

如何调用&#34;接口的构造函数&#34;有一个参数的类?

1 个答案:

答案 0 :(得分:3)

正确的语法是

Base() : Interfaces(42)... {}

此处Interfaces(42)...是带有模式Interfaces(42)包扩展,这意味着它会扩展为令牌列表,每个类型对应一个令牌,类似于Interfaces替换为类型的模式。

有关更深入的说明,请参阅this link