純粋仮想関数

ようやく僕も C++オブジェクト指向が分かってきました。
template なクラスに純粋仮想関数付けてインタフェースを統一、みたいな。
せっかくなので書いておく。

template
class 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* を持たせることにした