2015-02-01 5 views
2

Скажем, у меня есть этот пример:Множественное наследование в 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 
} 

Как назвать конструкторами «Интерфейсы» классов с одним аргументом?

ответ

2

Правильного синтаксис

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

Здесь Interfaces(42)... это расширение а пакета с рисунком Interfaces(42), что означает, что он расширяется в список маркеров, по одному для каждого типа в пакете, которые напоминают шаблон с Interfaces заменен на тип.

См. this link для более подробного описания.

Смежные вопросы