class MyDerived: public Incredble<Difficult< And<Complicated, Long>>, And<Even, Longer>, BaseClass, Name>
{
public:
MyDerived();
}
MyDerived::MyDerived
: ???(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)
{
}
最佳答案
你可以使用 injected-class-name . Incredible<...>::Incredible
指的是它自己,因为 MyDerived
不是类模板,非限定查找将在其基类的范围内查找:
MyDerived::MyDerived
: Incredble(params)
{}
如果Incredible
是一个从属 名称,那么您需要对其进行限定。实际上,您可以简单地使用派生类型名称来限定基类的 injected-class-name (h/t Johannes Schaub-litb ):
MyDerived::MyDerived
: MyDerived::Incredible(params)
{}
这适用于所有情况。
关于c++ - 调用基类构造函数而不命名其类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39413091/