【发布时间】:2014-01-22 12:42:29
【问题描述】:
好的,所以我在过去的 4 个小时里一直在搜索每个论坛关于“这里首先定义的多重定义”的问题,我想我一定是真的很愚蠢,但我似乎无法解决这个问题。
我有以下文件:
main.cpp
Socket.h
Socket.cpp
Server.h
Server.cpp
Packet.h
FileHandlerIn.h
FileHandlerOut.cpp
main.cpp 只包含 Server.h,它声明了一些函数,然后在 Server.cpp 中定义。
Server.cpp 使用了 Socket.cpp、FileHandlerOut.cpp 和 Packet.h 中的函数,因此 Server.h 中包含了头文件 Socket.h、Packet.h 和 FileHandlerIn.h。除标准库外,其他头文件均不包含任何其他内容。
发生的情况是 Server.cpp 中的每个函数和 Packet.h 中的每个函数都会出现多重定义错误。我在 Packet.h 中有函数的原因是我定义了一个结构,并且 Packet.h 函数都在该结构上运行。我真的很困惑我应该如何正确定义这些函数,所以我可以在其他 cpp 文件中使用它们,这可能是我的问题的一部分?
【问题讨论】:
-
你的标题中是否包含保护?
-
如果你有函数,定义在头文件中,不是结构/类的成员函数,你需要
inline。 -
将您的代码缩减为一个完整且仍能重现问题的最小示例,然后在此处发布。
标签: c++ include multiple-definition-error