前回CかC++かという話で、ちょっとずつでもクラスを使っていくと良いというご助言をいただきまして勉強中です。
少し気になる点があるため質問させてください。
ユニットクラスがパラメータクラスを持っているという状況において、
例えばパラメータクラスは下のようなコードとしますが
class CParam
{
private:
int hp;//体力
public:
int GetHp()const
{
return hp;
};
CParam()
{
hp=1;
};
~CParam(){};
};
正解不正解がなければメリット・デメリットをお聞かせください。
①パラメータクラスをそのまま持つか
②またはパラメータクラスのポインタを持って、newするか
Param.GetHP();//このように使うか
class CUnit
{
public:
CParam* Param;
CUnit()
{
Param=NULL;
if(Param==NULL)
{
Param=new CParam();
}
};
~CUnit()
{
if(Param!=NULL)
{
delete Param;
Param=NULL;
}
};
};
Paramのサイズが大きい場合、前者の方法だとスタックオーバーフローする
くらいしか今のところ思いついていません。
------キリトリ-------
また提起のコンポジションの件とは関係有りませんが、後者の場合、
コンストラクタでnewを失敗した場合、どのような処理をするのが適切なのでしょうか?
(プログラムを強制終了するようなコードを書くのか、それとも関数を抜けても機能するようにしたほうが親切なのか)
以上ご回答お待ちしております。