【问题标题】:Multiple inheritance in variadic template class & calling constructors可变参数模板类中的多重继承和调用构造函数
【发布时间】:2015-02-01 15:14:15
【问题描述】:

假设我有这个例子:

//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 以获得更深入的说明。

    【讨论】:

      猜你喜欢
      • 2021-07-13
      • 2019-12-14
      • 2014-05-15
      • 1970-01-01
      • 2014-01-29
      • 2019-12-14
      • 1970-01-01
      • 2013-03-25
      相关资源
      最近更新 更多