可变模板中的多重继承 class & 调用构造函数
Multiple inheritance in variadic template class & calling constructors
假设我有这个例子:
//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
}
如何使用单个参数调用 "Interfaces" 类 的构造函数?
正确的语法是
Base() : Interfaces(42)... {}
这里Interfaces(42)...
是一个pack expansion模式Interfaces(42)
,这意味着它扩展到一个token列表,每个token对应一个token包装,类似于 Interfaces
替换为类型的模式。
有关更深入的说明,请参阅 this link。
假设我有这个例子:
//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
}
如何使用单个参数调用 "Interfaces" 类 的构造函数?
正确的语法是
Base() : Interfaces(42)... {}
这里Interfaces(42)...
是一个pack expansion模式Interfaces(42)
,这意味着它扩展到一个token列表,每个token对应一个token包装,类似于 Interfaces
替换为类型的模式。
有关更深入的说明,请参阅 this link。