1

g++ 4.5.3 (サイグウィン)

class SlipDatum {
public:
   bool operator!();
   long operator~();
}

bool SlipDatum::operator!() { }
long SlipDatum::operator~() { }

Operator!() にはプロトタイプが必要です: const bool operator!();

しかし operator~() は期待せずに機能します。理由は?

コンパイラ エラーは次のとおりです。

SlipDatum.cpp:104:15: エラー: 'const slip::BOOL slip::SlipDatum::operator!()' のプロトタイプがクラス 'slip::SlipDatum' のいずれとも一致しません SlipDatum.h:15295:18: エラー: 候補は: bool slip::SlipDatum::operator!()

4

2 に答える 2

3

正確な意味を理解するのは困難ですが、多くの場合;、クラス定義の後に欠落があると、奇妙で​​紛らわしいさまざまなエラー メッセージが表示される可能性があります。私のバージョンのGCCではあなたのものを再現できません。

;とにかく、クラス定義の最後にa を追加します。

于 2013-01-05T01:12:53.507 に答える
1
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) で奇妙なバグを発見したか、戻り値を期待する関数から実際に返せなかったことが問題であるか、質問の形式が正しくないか、エラーが別の方法で投稿と私の答え。

于 2013-01-05T01:12:40.373 に答える