Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将模块拆分为多个文件 我读过C++中的模块,有些东西我真的不懂该怎么做。我想知道如何用当前合并的模块建议有效地将C++模块分割成多个文件。_C++_C++20_C++ Modules - Fatal编程技术网

如何将模块拆分为多个文件 我读过C++中的模块,有些东西我真的不懂该怎么做。我想知道如何用当前合并的模块建议有效地将C++模块分割成多个文件。

如何将模块拆分为多个文件 我读过C++中的模块,有些东西我真的不懂该怎么做。我想知道如何用当前合并的模块建议有效地将C++模块分割成多个文件。,c++,c++20,c++-modules,C++,C++20,C++ Modules,假设我有两个要导出的类。我想分割我的ixx文件,这样每个类的实现都保留在单独的文件中 我想象过这样的事情: interface.ixx: export module MyModule; export namespace MyLib { struct A { void doStuff(); }; struct B { A myA; void otherStuff(); }; } 然后,我想像这样实现我的类 A.i

假设我有两个要导出的类。我想分割我的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.unit]/8中:

既不包含
导出
也不包含模块分区的模块声明会像通过模块导入声明一样隐式导入模块的主模块接口单元


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

不相关,但上次我检查模块是否超出C++17,是否有变化?@101010否,模块仍然超出C++17,但可能会添加到C++20。很抱歉,我的标签有误导性,我将删除它。或者它可能在2020年再次被跳过。而不是盯着水晶球,在未来4年,并看答案,只不过是幻想的野生猜测,请考虑,就任何C++编译器今天已经支持这一点。并且知道如何解决这个问题。他们只是不这么做。直到你说出你的名字,你才能得到一个有用的答案。这就是为什么我提到了“当前TS”,因为将被添加到C++中的模块的最终实现有很大的机会与当前的TS相似。
module MyModule;

// import self again??

MyLib::B::otherStuff() {
    myA.doStuff();
}