gpt4 book ai didi

c++ - 禁用关于在派生类的复制构造函数中显式初始化基构造函数的警告

转载 作者:太空狗 更新时间:2023-10-29 23:31:26 26 4
gpt4 key购买 nike

我正在使用启用了 -Wextra 的 g++ 版本 4.2.1。我包含了库中的 header ,并且不断收到有关库中类的以下警告,该类由 -Wextra 启用(我已将类的实际名称替换为 BaseClass):

warning: base class ‘class BaseClass’ should be explicitly initialized in the copy constructor

我的问题是:如何禁用此警告?例如,-Wextra 还启用 -Wuninitialized,但我可以通过将 -Wno-uninitialized 作为编译器标志传递来覆盖它。关于复制构造函数的警告是否有类似的内容?我无法在 g++ 联机帮助页或任何其他论坛帖子中找到答案。

最佳答案

给定:

class BaseClass
{
public:
BaseClass();
BaseClass(const BaseClass&);
};

class DerivedClass : public BaseClass
{
public:
DerivedClass(const DerivedClass&);
};

这个拷贝构造函数:

DerivedClass::DerivedClass(const DerivedClass& obj)
// warning: no BaseClass initializer!
{
}

真正的意思是:

DerivedClass::DerivedClass(const DerivedClass& obj)
// Default construct the base:
: BaseClass()
{
}

如果这确实是您的意思,您可以像上面那样放入默认构造函数初始值设定项,并且警告将消失。但是编译器建议您实际上可能需要这个:

DerivedClass::DerivedClass(const DerivedClass& obj)
// Copy construct the base:
: BaseClass(obj)
{
}

关于c++ - 禁用关于在派生类的复制构造函数中显式初始化基构造函数的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4788695/

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