C++相談室 part51
■ このスレッドは過去ログ倉庫に格納されています
0671デフォルトの名無しさん
2006/08/09(水) 16:24:20ただ、継承しつつ内部に包含する(?)というのがある程度一般的になされることなのか
自信がありません。コメント頂けるとありがたいです。
struct base { virtual void func(void) = 0; }; // インターフェイス
struct derived1 : public base { void func(void) { cout << "d1" << endl;} };
struct derived2 : public base { void func(void) { cout << "d2" << endl;} };
struct t1 {}; // 切り替え用の
struct t2 {}; // タグ
struct X : public base {
X(t1) : m_impl(new derived1) {} // t1指定でderived1の動作
X(t2) : m_impl(new derived2) {} // t2指定でderived2の動作
~X() { delete m_impl; }
void func(void) { m_impl->func(); }
base* m_impl;
};
int main(void) {
t2 t; // t2を
X x(t); // 指定したので
x.func(); // d2と表示
return 0;
}
■ このスレッドは過去ログ倉庫に格納されています