如何将一个模块拆分为多个文件

How to split a module into multiple files

本文关键字:模块 拆分 文件 一个      更新时间:2023-10-16

我读过c++中的模块,有些东西我真的不明白该怎么做。我想知道如何用当前合并的模块提案有效地将c++模块拆分为多个文件。

假设我有两个要导出的类。我想拆分我的ixx文件,这样每个类的实现都留在单独的文件中。

我想象的是这样的:

interface.ixx:

export module MyModule;
export namespace MyLib {
    struct A {
        void doStuff();
    };
    struct B {
        A myA;
        void otherStuff();
    };
}

然后,我想这样实现我的类,

A.ixx:

module MyModule;
// import self??
MyLib::A::doStuff() {
    // stuff...
}

B.ixx

module MyModule;
// import self again??
MyLib::B::otherStuff() {
    myA.doStuff();
}

我想知道的:是一个模块,不管文件,是意识到它的接口?如果没有,是否有其他方法将模块拆分为多个文件?我知道在这种情况下这可能看起来很愚蠢,但是对于大模块中的大类,将它们分开是很诱人的。

在合并模块提案中,[module.unit]/8:

既不包含export也不包含模块分区模块声明隐式导入模块的主模块接口单元,就像通过module-import-declaration一样。

这意味着模块实现单元隐式地导入该模块的主模块接口。