2016-12-23 2 views
1

データを格納するクラスがあります。 問題は、構築時にデータが利用できないことです。更新/初期化関数またはコンストラクタ(構築時にデータが利用できません)

重要:クラスは、読み取り専用クラスを持つSDK用です(ゲッターのみ)。 クラスは、オンラインAPIからのデータのみを格納します。

データが利用可能なときにポインタを使用してオブジェクトを作成(割り当て)する必要がありますか? これは、データが無効であるか、コンストラクタがある時点で失敗したときに例外をスローするコンストラクタを必要とします。

オブジェクトのデフォルトコンストラクタを定義し、クラスメンバを初期化するupdate/init関数を実装する必要があります。 このソリューションでは、更新関数が呼び出されるまで「ゾンビ」オブジェクトがあるという問題が発生します。 2番目の問題は、update/init関数を呼び出すことを忘れるかもしれない - 最初の問題が発生することです。

答えて

0

CPPコアガイドライン(http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)によれば:

C.41:コンストラクタは、コンストラクタはクラスの不変を確立完全object初期化

理由を作成する必要があります。クラス のユーザは、構築されたオブジェクトが使用可能であると想定できるはずです。

例外有効なオブジェクトが便利 コンストラクタによって構築することができない場合は、続い

ファクトリ関数を使用します。

C.42:コンストラクタが有効なオブジェクトを作成することができない場合は、 例外

理由無効なオブジェクトの後ろに残すと、 の問題が発生することがあります。

関連する問題