4

C++ のモジュールについて読んだことがありますが、どうすればよいかよくわかりません。現在のマージされたモジュールの提案を使用して、C++ モジュールを複数のファイルに効果的に分割するにはどうすればよいでしょうか。

エクスポートしたい 2 つのクラスがあるとします。これらの各クラスの実装が別々のファイルにとどまるように、ixx ファイルを分割したいと考えています。

私は次のようなものをイメージしました:

インターフェイス.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();
}

私が知りたいこと: モジュールは、ファイルに関係なく、そのインターフェースを認識していますか? そうでない場合、モジュールを複数のファイルに分割する別の方法はありますか? その場合、ばかげているように思えるかもしれませんが、大きなモジュール内に大きなクラスがある場合、物事を分離したままにしておくのは魅力的です。

4

1 に答える 1

2

マージされたモジュールの提案では、[module.unit]/8:

module-partitionもmodule-partitionも含まないmodule-declarationは、 module-import-declaration によるかのように、モジュールのプライマリ モジュール インターフェイス ユニットを暗黙的にインポートします。export

これは、モジュール実装ユニットがモジュールのプライマリ モジュール インターフェイスを暗黙的にインポートすることを意味します。

于 2019-02-27T20:09:48.350 に答える