我有一個內聯運算符在cpp文件中重載。 我的理解是內聯函數還應該把函數體放在頭文件中。運算符重載錯誤C++
但是當我這樣做。錯誤出來,這是 重新定義「運營商==」
你能解釋爲什麼是這樣的錯誤。 以及任何人都可以解釋什麼樣的內容應該保留在頭文件中。
inline bool operator ==(Duration& d1, Duration& d2)
{
return d1.getSecond() == d2.getSecond();
}
我有一個內聯運算符在cpp文件中重載。 我的理解是內聯函數還應該把函數體放在頭文件中。運算符重載錯誤C++
但是當我這樣做。錯誤出來,這是 重新定義「運營商==」
你能解釋爲什麼是這樣的錯誤。 以及任何人都可以解釋什麼樣的內容應該保留在頭文件中。
inline bool operator ==(Duration& d1, Duration& d2)
{
return d1.getSecond() == d2.getSecond();
}
您不能兩次定義函數。在頭文件中聲明它並在cpp中定義它 - 或者 - 只需在頭文件中定義它,並將其完全保留在cpp中。
頭部的定義應該是'inline',我認爲cpp文件不應該。 – leemes
內聯函數需要放在標題中,而不是源。否則,他們將無法在其他來源嘗試打電話給他們。
在源文件中有第二個副本確實是重複的。
你應該給參數添加'const':'inline bool operator ==(常量持續時間&d1,常量持續時間&d2)' – leemes