純粋仮想関数
ようやく僕も C++ とオブジェクト指向が分かってきました。
template なクラスに純粋仮想関数付けてインタフェースを統一、みたいな。
せっかくなので書いておく。
templateclass DWLF { public: T d_; bool bLoaded_; CSTR szColName_; DWLF( CSTR szColName__ ) : bLoaded_(false), szColName_(szColName__) {} virtual bool save( DbStatement st_, int id_ ) = 0; virtual bool load( DbStatement st_, int id_ ) = 0; T& getWithAutoLoad( DbStatement st_, int id_ ) { if( bLoaded_ == false ) load( st_, id_ ); return d_; } };
これで getWithAutoLoad すると自動で load してくれる。load は T によって依存するので純粋仮想関数になってる。でももう少しいい設計ができるかも。*1
*1:結局 T ではなく T* を持たせることにした