0

我正在写一个小的任意精度算术库,我遇到了一个问题:

std::exception我的exception.hexception.cpp中有派生自 的异常类。Exception.h包含在vector.h中,而vector.h又包含在 my_long.h 中。

所以问题是:当我在main.cpp和 my_long.cpp 中包含 my_long.h 时,LNK2005我的异常类中的所有函数都会出现重新定义链接器错误,这是非常合乎逻辑的,因为我包含了这个类在两个不同的翻译单元中,然后尝试将它们链接在一起。

是否有任何可能的解决方法,或者我做错了什么?

4

1 回答 1

0

你有两个选择。您可以将 my_long.h 中的所有函数标记为内联,这允许多个相同的定义,或者您可以将函数定义移动到 my_long.cpp 并在 my_long.h 中为它们提出声明。

通常,为了保持头文件的可读性,除了非常小的函数外,您应该执行第二个操作。

于 2012-08-01T14:27:33.793 回答