【发布时间】:2019-10-28 14:13:01
【问题描述】:
我有一个问题,为什么在“一步”完成时可以编译某件事,但在“两步”完成时不能编译。我有三个班级;
class Time {
int mTime;
int Time::getTimeAsUnix() const {return mTime;}
}
class Travel {
Time mTimestamp;
const Time& Travel::getTime() const { return mTimestamp; }
Time& Travel::getTime() { return mTimestamp; }
}
class Analysis : public Travel {
int Analysis::getUnixTime() const {
// Time& t = Travel::getTime();
// return t.getTimeAsUnix(); // This does NOT compile
return Travel::getTime().getTimeAsUnix(); // This compiles
}
}
任何人都知道为什么在 Analysis 类中,非注释方法编译,而注释方法给我一个即时 “c++ 错误:将 'const Time' 绑定到类型 'Time&' 的引用丢弃限定符” em> 我什么时候试试?
执行时这两者不完全一样吗??
【问题讨论】:
-
你试过
const Time& t = Travel::getTime();吗? -
我很确定没有编译的行是
Time& t = Travel::getTime();,因为你所在的方法本身就是 const 并且会拒绝调用非常量方法。总之,这不是因为你分两步做,而是因为你显式调用了非常量方法。
标签: c++ reference constants qualifiers