【发布时间】:2018-09-04 18:17:07
【问题描述】:
我有一些代码 here 正在使用 -Weffc++ -Wall -Wextra 进行编译。
基本上我有这个sn-p:
class base
{};
class test : public base
{
public:
base& operator=(int)
{
return *this;
}
};
我收到警告:warning: 'operator=' should return a reference to '*this' [-Weffc++]。我真的不知道该怎么做这个警告。我读过这完全没问题(即返回一个尊重的 this)。
有什么方法可以让我的编译器满意吗?
【问题讨论】:
-
你能创建一个minimal reproducible example 仍然在你的机器上发出警告吗?
-
*this是test的实例吗?不复现,直播:godbolt.org/z/JvKVxq -
搜索是否找到了 weffc 警告列表中的文档?这是 g++ 的“风格警察”选项,因此这些不是“真正的”警告。您需要找出迈耶斯认为其风格不佳的原因。
-
您不应该在 operator= 上返回对基类的引用。警告是正确的,您唯一能做的就是修复代码或忽略警告。