3
讓我開始說這個編譯並在Visual Studio中運行良好。但是,當我在Linux(g ++)上編譯相同的文件時,我得到編譯錯誤來聲明和實現運算符的過載。Linux g ++編譯錯誤:錯誤:在'||'之前期望','或'...'令牌
代碼的相關部分摘錄如下。 (這是一個包含Google測試案例的.cpp文件,並且有類和方法定義以支持測試用例。)除了代碼的相關部分(我希望)之外,我忽略了所有內容。
class orderrequest : public msg_adapter {
public:
// ... snip
friend bool operator ==(const orderrequest &or1, const orderrequest &or2);
friend ostream& operator <<(ostream &out, const orderrequest &or); // compiler error here
};
bool operator ==(const orderrequest &or1, const orderrequest &or2) {
bool result = or1.symbol == or2.symbol
&& or1.orderQty == or2.orderQty;
// ... snip
return result;
}
// compiler error here
ostream& operator <<(ostream &out, const orderrequest &or) {
out << "symbol=" << or.symbol << ",orderQty=" << or.orderQty;
return out;
}
的編譯拋出了一些錯誤,所有看似相關的努力超載<<
操作:
EZXMsgTest.cpp:400: error: expected ',' or '...' before '||' token
EZXMsgTest.cpp:428: error: expected ',' or '...' before '||' token
EZXMsgTest.cpp: In function 'std::ostream& operator<<(std::ostream&, const orderrequest&)':
EZXMsgTest.cpp:430: error: expected primary-expression before '||' token
EZXMsgTest.cpp:430: error: expected primary-expression before '.' token
EZXMsgTest.cpp:430: error: expected primary-expression before '||' token
EZXMsgTest.cpp:430: error: expected primary-expression before '.' token
400線是friend ostream& operator <<
線,併線430是爲<<
操作方法的實現。
此外,我不知道爲什麼編譯器錯誤引用「||」令牌。 (我被放到服務器上,我按照一些說明將語言環境設置爲「C」,這有助於提高輸出,但它看起來仍然不正確。)
謝謝大家。
謝謝!我想也許它是與「或」的使用有關(我已經通過將類從「或」改名爲「orderrequest」),但我從來沒有真正想過或是C++使用的令牌。你爲我節省了更多的時間! –