0

我在 cpp 文件中有一个内联运算符重载。我的理解是内联函数也应该和函数体一起放在头文件中。

但是当我这样做时。出现的错误是“operator ==”的重新定义

你能解释一下为什么会出现这样的错误。另外,谁能解释一下头文件中应该保留什么样的内容。?

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

   return d1.getSecond() == d2.getSecond();
}
4

2 回答 2

3

你不能定义一个函数两次。在标题中声明它并在 cpp 中定义它 - 或者 - 只需在标题中定义它并将其完全排除在 cpp 之外。

于 2012-12-10T17:56:32.843 回答
2

内联函数需要放在标题中,而不是源中。否则,它们在您尝试调用它们的其他来源中将不可用。

在源代码中有第二个副本确实是重复的。

于 2012-12-10T17:56:54.727 回答