【问题标题】:Multiple inheritance in variadic template class & calling constructors可变参数模板类中的多重继承和调用构造函数
【发布时间】:2025-12-20 08:35:07
【问题描述】:

假设我有这个例子:

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

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

【问题讨论】:

    标签: c++ class templates variadic


    【解决方案1】:

    正确的语法是

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

    这里的Interfaces(42)... 是一个包扩展,其模式为Interfaces(42),这意味着它扩展为一个标记列表,每个标记对应一个包中的类型,类似于带有@ 的模式987654325@替换为类型。

    请参阅this link 以获得更深入的说明。

    【讨论】: