[英]Why does overload ! operator need a const return
g ++ 4.5.3(cygwin)
class SlipDatum {
public:
bool operator!();
long operator~();
}
bool SlipDatum::operator!() { }
long SlipDatum::operator~() { }
運算符!()期望prototype:const bool運算符!();
但是運算符〜()沒有期望。 任何原因為什么?
編譯器錯誤是:
SlipDatum.cpp:104:15:錯誤:'const slip :: BOOL slip :: SlipDatum :: operator!()'的原型與類'slip :: SlipDatum'中的任何一個都不匹配SlipDatum.h:15295:18:錯誤:候選人是:bool slip :: SlipDatum :: operator!()
很難弄清楚你的意思究竟是什么,但在很多情況下都缺失了;
課后定義可能會導致各種奇怪和混亂的錯誤消息。 雖然在我的GCC版本中,我無法復制你的。
無論如何,添加一個;
在類定義的最后。
class SlipDatum {
public:
bool operator!();
long operator~();
};
bool SlipDatum::operator!() { return false; }
long SlipDatum::operator~() { return 0; }
int main() {
SlipDatum unused;
}
這段代碼在gcc 4.3.4 gcc 4.5.1和gcc 4.7.2中編譯得很好
要么你在gcc 4.5.3(cygwin)中發現了一個奇怪的錯誤,要么你的問題是你沒有真正從一個期望返回值的函數返回,或者你的問題形成得很糟糕,或者你的錯誤在你的發布和我的回答。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.