09/02/10 19:50:17
>>9
インタフェースクラスを作って、
実際にはその実装クラスを new して返す
static メンバ関数を用意する、という手法もある。
// IA.h
class IA {
public:
static IA* Create();
virtual ~IA() { }
virtual void Hoge() = 0;
};
// IA.cpp
#include "IA.h"
class A : public IA {
public:
virtual void Hoge() { /* ここで実装 */ }
};
IA* IA::Create() { return new A; }
こっちはメンバへのアクセスが楽だという利点と、
public メンバ関数を追加するのが面倒臭いという欠点がある。