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

Multiple inheritance in variadic template class & calling constructors

本文关键字:多重继承 调用 构造函数 变参 参数      更新时间:2023-10-16

假设我有这个例子:

//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
}

如何使用单个参数调用"接口"类的构造函数?

正确的语法是

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

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

有关更深入的说明,请参阅此链接。