class MyDerived: public Incredble<Difficult< And<Complicated, Long>>, And<Even, Longer>, BaseClass, Name>
{
public:
MyDerived();
}
MyDerived::MyDerived
: ???(params)
{}
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有编写全名的情况下调用基础构造函数并且没有类型化它?
原因显然是避免代码重复并引入多个位置以在基类模板params中的细节发生变化时进行更改.
第2级:
template <uint32 C>
class MyDerived: public Incredble<Difficult< And<Complicated, Long>>, And<Even, Longer>, BaseClass, Name>
{
public:
MyDerived();
}
template <uint32 C>
MyDerived::MyDerived<C>
: ???(C)
{
}
Run Code Online (Sandbox Code Playgroud)
您可以使用inject-class-name.Incredible<...>::Incredible引用自身,并且因为MyDerived它不是类模板,所以非限定查找将查看其基类的范围:
MyDerived::MyDerived
: Incredble(params)
{}
Run Code Online (Sandbox Code Playgroud)
如果Incredible是从属名称,那么您需要对其进行限定.实际上,您可以简单地使用派生类型名称来限定基类的inject -class-name(h/t Johannes Schaub-litb):
MyDerived::MyDerived
: MyDerived::Incredible(params)
{}
Run Code Online (Sandbox Code Playgroud)
这适用于所有情况.