class ListItem
{
ListItem* GetPrev ();
ListItem* GetNext ();
// ... and many more
};
class One : public ListItem
{
One* GetPrev() { return static_cast<One*>(ListItem::GetPrev()); }
One* GetNext() { return static_cast<One*>(ListItem::GetNext()); }
// ... and many more overrides
};
class Two : public ListItem
{
Two* GetPrev() { return static_cast<Two*>(ListItem::GetPrev()); }
Two* GetNext() { return static_cast<Two*>(ListItem::GetNext()); }
// ... and many more overrides
};
class Object : public One, public Two
{
};
目的は、クラスObjectを2つ以上の異なるリストに挿入することです。私の質問は、どのように私は1と2をテンプレートできますか?クラスの名前もタイプとして表示されるので、これも可能ですか?私はこれをマクロでカバーしていますが、テンプレートで行うことはできますか?コード構造が少し変わっても構いませんが、マクロなしでこれを行うことはできますか?クラス定義マクロをテンプレートに置き換える
['std :: list