gpt4 book ai didi

c++ - 调用基类构造函数而不命名其类

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:17 26 4
gpt4 key购买 nike

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com