我有两个源文件,一个名为main.cpp
(定义了 namespace M
的地方)和文件engines.h
(定义了几个名称)。main.cpp
包括engines.h
。engines.h
需要使用M
内的内容,而M
需要使用engines.h
内的内容。
我在using namespace M;
中执行engines.h
时遇到错误。
最佳答案
您不能在定义 namespace 之前执行using namespace M
。如果存在循环依赖性,则需要使用一种或多种技术来解决
namespace M { class MyCow; }
// engines.h
void f();
// engines.cpp
#include "main.h"
void f() { MyCow muuh; }
将.h文件拆分为接口(interface),将.cpp文件拆分为用于处理此类依赖关系的实现。这样,头文件就较少依赖于其他头文件,并且实现文件可以包含这些头文件。
关于c++ - namespace 的可见性问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3186540/