<分区>
我知道这是一个简单的问题,但我用谷歌搜索了一段时间,根据我的发现,我仍然不明白这个问题。 我有这个简单的代码:
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 $