簡體   English   中英

為什么超載! 運算符需要const返回

[英]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.1gcc 4.7.2中編譯得很好

要么你在gcc 4.5.3(cygwin)中發現了一個奇怪的錯誤,要么你的問題是你沒有真正從一個期望返回值的函數返回,或者你的問題形成得很糟糕,或者你的錯誤在你的發布和我的回答。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM