【发布时间】:2016-03-29 09:54:50
【问题描述】:
我知道这是一个简单的问题,但我已经用谷歌搜索了一段时间,从我的发现中我仍然不明白这个问题。 我有这个简单的代码:
class X {
public:
X() : x_(42) {};
virtual const long long f() const {
return do_f();
}
protected:
virtual const long long do_f() const {
return x_;
}
long long x_;
};
auto main() -> int {
X x;
x.f();
}
我希望它能够编译,因为我看不到这些方法如何修改 X 的对象。 但显然我错过了一些东西,因为:
rakul@lucky-star /tmp $ g++ --std=c++14 -Werror=ignored-qualifiers 1.cpp
1.cpp:6:37: error: type qualifiers ignored on function return type [-Werror=ignored-qualifiers]
virtual const long long f() const {
^
1.cpp:10:40: error: type qualifiers ignored on function return type [-Werror=ignored-qualifiers]
virtual const long long do_f() const {
^
cc1plus: some warnings being treated as errors
rakul@lucky-star /tmp $
【问题讨论】: