1つのファイルで、次の2つのコードを書くことができます。フォワード宣言を使用してクラスをファイルの末尾に移動する必要がありますか?
まず(トップダウン感):
Class B;
Class A {
B *b;
};
Class B {
};
セカンド(ボトムアップ感):
Class B {
};
Class A {
B *b;
};
1つのファイルで、次の2つのコードを書くことができます。フォワード宣言を使用してクラスをファイルの末尾に移動する必要がありますか?
まず(トップダウン感):
Class B;
Class A {
B *b;
};
Class B {
};
セカンド(ボトムアップ感):
Class B {
};
Class A {
B *b;
};
前方宣言を使用したことには何も問題はありません。彼らはコンパイラを助けるだけで、ほとんどのプログラマはコードを読むときに無視します。あなたの2番目の選択肢では、BクラスがAを使用する場合でも、宣言を使用する必要があります。もし私があなただったら私は最初の選択肢に行くだろう。
そして、あなたが 'B * b 'を持っているよりむしろ' B b'を望むならば、あなたはそれらを交換する必要があります。リファクタリングは、人々がしなければならないものです。毎回正しいことを得る。 – UKMonkey
あなたに良く見えるものを使用しても問題ありません。 – alain
コーディングスタイルの些細な点や好みについての質問は役に立ちません。また、そのコードはコンパイルされませんでした。というのも、クラス定義の後ろに続くセミコロンを忘れてしまったからです。 –
あなたのクラスの設計によって違いを生むものがある - 前方宣言を使うことによって、ポインタやそのようなクラスへの参照しか使えない。 –