如何解决使用 c++20 模块的“循环依赖”错误
我试图在另一个模块中包含一个模块,但由于以下错误我无法编译:
"无法构建以下源文件,因为存在循环 它们之间的依赖: Module1.ixx 依赖 Module2.ixx 依赖 模块 1.ix。"
我试过的代码:
// 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 专业版
解决方法
创建没有循环依赖的模块接口单元。
模块接口单元在用途上与头文件有些相似。
模块接口单元中有 export module
。主模块接口单元没有分区名称。
从 { modClass2_ mc2; return mc2.V; };
主模块接口单元中移除 export Module1;
的实现,在 Module1
的模块实现单元中执行此操作,并包含 {{1}
import Module2;
并且循环依赖被打破了。
,如果 A
导入 B
,则不能在模块 B
中导入模块 A
。
为了解决这个问题,您必须以某种方式不在 A
中导入 B
或 B
在 A
中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。