gpt4 book ai didi

c++ - 只是另一个 "multiple definition first defined here"错误

转载 作者:太空狗 更新时间:2023-10-29 20:41:27 27 4
gpt4 key购买 nike

好吧,所以我在过去的 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 中的函数,因此头文件 Socket.h、Packet.h 和 FileHandlerIn.h 包含在 Server.h 中。除了标准库之外,其他头文件均不包含任何其他内容。

发生的是 Server.cpp 中的每个函数和 Packet.h 中的每个函数都会出现多重定义错误。我在 Packet.h 中有函数的原因是我定义了一个结构,并且 Packet.h 函数都在该结构上运行。我真的很困惑我应该如何正确定义这些函数,以便我可以在其他 cpp 文件中使用它们,这可能是我的问题的一部分?

最佳答案

every function in Packet.h gets a multiple definition error

如果您要在 header 中(在类定义之外)定义函数,则需要将它们标记为inline。这放宽了单一定义规则,允许在多个翻译单元中进行定义。

您仍然只允许在每个翻译单元中有一个定义,因此请确保 header 包含守卫。

关于c++ - 只是另一个 "multiple definition first defined here"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21283285/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com