0

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

“无法构建以下源文件,因为它们之间存在循环依赖关系:Module1.ixx 依赖于 Module2.ixx 依赖于 Module1.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 | 视窗 10 专业版

4

1 回答 1

1

创建没有循环依赖的模块接口单元。

模块接口单元的用途有点类似于头文件。

其中有一个模块接口单元export module。主模块接口单元没有分区名称。

{ modClass2_ mc2; return mc2.V; };export Module1;主要模块接口单元中删除 的实现,在 的模块实现单元中执行此操作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; };

并且循环依赖被打破。

于 2021-07-06T13:47:35.663 回答