私はそれが非常に魅力的なプログラミングスタイルは、例えば、構造体に直接インライン構造体/クラスのすべてのメソッドを定義するだけで構造体をこのように定義見つける:クラスメソッドのインライン定義
"A.hpp"
class A;
"A.cpp"
class A
{
A() = default;
void method() { }
};
ではなく
"A.hpp"
class A
{
A();
void method();
};
"A.cpp"
A::A() = default;
void A::method() { }
これは、コードファイルにクラス/構造体定義を置き、ヘッダファイルに宣言だけを含めることを意味します。
しかし、これは、コンパイラは、他のコードファイル内の構造体/クラスのレイアウトを知っておく必要があるだろう問題に実行されます。
これをサポートしているプログラミングスタイルはありますか?おそらくgetters/setterを介してフィールドを取得して設定するだけですか?しかし、この方法は大量のボイラープレートにつながります。 1が明示的に他に宣言を置きますしない限り、単にヘッダファイル内の構造体/クラス定義を含む
は、相互再帰的なヘッダファイルの問題につながります。
私は、モジュールシステムとDのような言語では、このプログラミングスタイルを実現することができますが、どのように1は、C++でそれを達成していますか?
のように、ヘッダファイルにインラインメソッドを定義し、コンパイラはそれは(そのサイズを決定するために)含まれているものを、変数を知っている必要があり、どのようなメンバー関数は(それはのためのシンボルを生成することができましたリンク)。したがって、クラス定義は、実際にそのクラスを使用するファイル(つまり、ポインタや参照を宣言する以外のもの)では常に表示されなければなりません。あなたのアイディアはコンパイルを遅らせたり、クラスの定義を乱雑に見せたりする有効なオプションですが、クラスの定義をソースファイルに入れると間違ったことになります。 –
C++コンパイルモデルは、あなたがしようとしていることを不可能にします。 – SergeyA
私はOPの望むことをすることが不可能であるため、この質問を議論の対象外としています。 – SergeyA