在C++中的各种文件中包含更多次类

use*_*635 2 c++ declaration include

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

类Server使用对象Util.该程序工作正常,但现在我需要在Logger类中使用对象Util.但是当我输入代码#include"Util.cpp"时,g ++给我一个错误,因为我无法再次调用该对象.Eclipse告诉我关于类Util的"重新定义"和"先前声明".

我怎么解决这个问题?

Alo*_*ave 7

您不应将源cpp文件包含在另一个cpp文件中.
这基本上违反了一个定义规则,导致重新定义错误.

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

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

Util.h ----------->包含类的定义Util充当接口
Util.cpp ----------->包含类的实现Util作为实现

每当你想Util在cpp文件中包含的任何cpp文件中创建类的对象时,Util.h编译器都知道类的定义Util.

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

#include "Util.h"
Run Code Online (Sandbox Code Playgroud)

另外,不要忘记在头文件中添加Include警卫.

如果使用Util由另一个源/头文件被限制为创建一个指针Util,那么你不需要包含头文件,你只需要转发声明Util类.