g ++ 4.5.3(cygwin)
class SlipDatum {
public:
bool operator!();
long operator~();
}
bool SlipDatum::operator!() { }
long SlipDatum::operator~() { }
运营商!()期待原型: const bool operator!();
但是运算符〜()没有任何期望。任何原因为什么?
编译错误是:
SlipDatum.cpp:104:15:错误:'const slip :: BOOL slip :: SlipDatum :: operator!()'的原型与类中的任何一个都不匹配 'slip :: SlipDatum'SlipDatum.h:15295:18:错误:候选人是:bool 滑:: SlipDatum ::运算!()
答案 0 :(得分:3)
很难弄清楚你的意思究竟是什么,但在很多情况下,在课程定义后遗漏;
会导致各种奇怪和混乱的错误信息。虽然在我的GCC版本中,我无法复制你的。
无论如何,在类定义的末尾添加;
。
答案 1 :(得分: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)中发现了一个奇怪的错误,或者你的问题是你实际上没有从一个期望返回值的函数返回,或者你的问题形成得很糟糕,或者你的错误在你的帖子和我的回答之间的差异。