1

g++ 4.5.3 (cygwin)

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 版本中复制你的。

无论如何,;在类定义的末尾添加一个。

于 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.1gcc 4.7.2中编译得很好

您在 gcc 4.5.3 (cygwin) 中发现了一个奇怪的错误,或者您的问题是您未能从期望返回值的函数中实际返回,或者您的问题格式错误,或者您的错误在于您之间的差异帖子和我的回答。

于 2013-01-05T01:12:40.373 回答