使用 c++20 模块时"cyclic dependency"错误



我试图在另一个模块中包含一个模块,但由于以下错误,我无法编译:

"无法生成以下源文件,因为存在循环它们之间的依赖关系: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; };

并且循环依赖性被打破。

相关内容

  • 没有找到相关文章

最新更新