gpt4 book ai didi

c++ - 在 C++ 的各种文件中多次包含一个类

转载 作者:太空狗 更新时间:2023-10-29 23:53:55 24 4
gpt4 key购买 nike

我有 4 个类:Server.cpp Logger.cpp Util.cpp Crypto.cpp

Server类使用对象Util。该程序运行良好,但现在我还需要在类 Logger 中使用对象 Util。但是当我输入代码#include "Util.cpp"g++ 给我一个错误,因为我不能再次调用该对象。Eclipse 告诉我类 Util 的“重新定义”和“先前声明”。

我该如何解决这个问题?

最佳答案

您不应将源 cpp 文件包含到另一个 cpp 文件中。
这基本上违反了 One Definition Rule 导致重定义错误。

在您要创建其对象的任何类中包含具有 Util 类定义的头文件。

基本上,您的代码应该以这种方式组织(异常(exception):模板化代码):

Util.h ----------> 包含类 Util 的定义作为接口(interface)
Util.cpp ----------> 包含类 Util 的实现作为实现

每当您想在任何 cpp 文件中创建类 Util 的对象时,您都将 Util.h 包含在该 cpp 文件中,以便编译器知道定义属于 Util 类。

例如:
Server.cpp 想要创建一个 Util 的对象那么你的 Server.cpp 应该包含 Util.h 如下:

#include "Util.h"

此外,不要忘记添加 Include guards 到你的头文件。

如果另一个源/头文件对 Util 的使用仅限于创建指向 Util 的指针,那么您不需要包含头文件,您只需要到 Forward declare Util 类。

关于c++ - 在 C++ 的各种文件中多次包含一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8655195/

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