2012-12-10 95 views
0

我有一個內聯運算符在cpp文件中重載。 我的理解是內聯函數還應該把函數體放在頭文件中。運算符重載錯誤C++

但是當我這樣做。錯誤出來,這是 重新定義「運營商==」

你能解釋爲什麼是這樣的錯誤。 以及任何人都可以解釋什麼樣的內容應該保留在頭文件中。

inline bool operator ==(Duration& d1, Duration& d2) 
{ 

    return d1.getSecond() == d2.getSecond(); 
} 
+1

你應該給參數添加'const':'inline bool operator ==(常量持續時間&d1,常量持續時間&d2)' – leemes

回答

3

您不能兩次定義函數。在頭文件中聲明它並在cpp中定義它 - 或者 - 只需在頭文件中定義它,並將其完全保留在cpp中。

+1

頭部的定義應該是'inline',我認爲cpp文件不應該。 – leemes

2

內聯函數需要放在標題中,而不是源。否則,他們將無法在其他來源嘗試打電話給他們。

在源文件中有第二個副本確實是重複的。