我试图在另一个模块中包含一个模块,但由于以下错误,我无法编译:
"无法生成以下源文件,因为存在循环它们之间的依赖关系:Module1.ixx依赖于Module2.ixx依赖模块1.ixx;
我尝试过的代码:
// Module1.ixx
export module Module1;
import Module2;
export class modClass1_
{
public:
modClass1_() {};
~modClass1_() {};
int getV() { return V; };
int getOtherModuleV() { modClass2_ mc2; return mc2.V; };
int V = 1;
};
// Module2.ixx
export module Module2;
import Module1;
export class modClass2_
{
public:
modClass2_() {};
~modClass2_() {};
int getV() { return V; };
int getOtherModuleV() { modClass1_ mc1; return mc1.V; };
int V = 2;
};
如有任何帮助/建议,我们将不胜感激。
环境:Visual Studio 2019 | MSVC-2019 | C++20 | Windows 10 Pro
创建不具有循环依赖关系的模块接口单元。
模块接口单元在用途上与头文件有些相似。
模块接口单元中有export module
。主模件接口单元没有分区名称。
从export Module1;
主模块接口单元中删除{ modClass2_ mc2; return mc2.V; };
的实现,在Module1
的模块实现单元中执行,并在那里包含import Module2;
。
// Module1.ixx
export module Module1;
export class modClass1_
{
public:
modClass1_() {};
~modClass1_() {};
int getV() { return V; };
int getOtherModuleV();
int V = 1;
};
// Module1.mxx
module Module1;
import Module2;
int modClass1_::getOtherModuleV() { modClass2_ mc2; return mc2.V; };
并且循环依赖性被打破。