ゲームにおけるデータ構造・クラス設計・パターン
■ このスレッドは過去ログ倉庫に格納されています
0413名前は開発中のものです。
2007/07/17(火) 22:54:23ID:Mh0Ht4Or基本的?なデータの扱いについて意見を聞きたいです
データに対応する操作クラス以外から値を書き換えることを禁止するためにこういうクラスを考えました
template <typename T> class IData {
public:
friend class Mutator<T>;
typedef T element_type;
typedef boost::shared_ptr< element_type > value_type;
protected:
value_type value;
};
template <typename T> class IMutator : public IData<T> {
typedef IData<T> data_type;
protected:
void assign(data_type& target) { value = target.value; }
void swap(data_type& target) { boost::swap(value, target.value); }
};
使う際はこいつを継承して
class CData : public IData<int> {};
class CMutator : public IMutator<int> {};
のようにすれば
CMutatorはIMutatorのassignやswapを使ってCDataのvalueの指すデータを生成から破壊まで自由に扱えるわけです
でもこのようにするとCDataの持つ情報が増えた時に
class CData : public IData<Param>, IData<Graphic>, IData<Sound>のように
継承しまくりになることとか、shared_ptrの機能によるコストが気になったりします
そこでもっと一般的なやり方を知りたいんですが何か良い方法ありませんかね?
■ このスレッドは過去ログ倉庫に格納されています