我正在编写一个小的任意精度算术库,我遇到了一个问题:
我的 exception.h 和 exception.cpp 中有来自std::exception
的异常类。 vector.h 包含 Exception.h ,而my_long.h包含 vector.h 。
所以问题是:当我在 main.cpp 和my_long.cpp中包含my_long.h时,我的所有函数都出现了重新定义链接器错误LNK2005
异常类,这是非常合乎逻辑的,因为我将这个类包含在两个不同的翻译单元中,然后尝试将它们链接在一起。
是否有任何可能的解决方法,或者我做错了什么?
答案 0 :(得分:0)
你有两个选择。您可以将my_long.h中的所有函数标记为内联,这允许多个相同的定义,或者您可以将函数定义移动到my_long.cpp并在my_long.h中为它们提供声明。
通常,为了保持头文件的可读性,除了非常小的函数之外,你应该做第二个。