STLのlistクラスから派生クラスを作る

[戻る]
iwamu 2003/10/17(金) 15:13:37
はじめまして。iwamuといいます。

STLのlistクラスと、自作のあるクラスから多重継承させて、
ある派生クラスを作りたいのですが、コンパイルエラーが
発生してしまいます。
以下にソースを示します。

#include "ClassA.h"
#include <list>

class ClassB : public ClassA, public list
{
   ・
   ・
   ・
};

これをコンパイルすると、
「定義されていない基本クラスが宣言されています」
というエラーがでてきました。

テンプレートクラスの派生は、通常のクラスの派生と
異なるところがあるのでしょうか。

iwamu 2003/10/17(金) 15:14:51
環境を書くのを忘れていました。すみません。

Win98 VC++6.0 MFC

επιστημη [E-Mail] [HomePage] 2003/10/17(金) 15:21:10
class ClassB : public ClassA, public std::list<なにか> {
  ...
};

iwamu 2003/10/17(金) 15:47:31
[[解決]]
επιστημηさん、返答ありがとうございました。

#include "ClassA.h"
#include "Foo.h" //←listの中身
#include <list>

class ClassB : public ClassA, public std::list<Foo>
{
   ・
   ・
   ・
};

以上のようにすることで、解決できました。
ありがとうございました。

tetrapod 2003/10/17(金) 15:53:15
えー?ほんとに継承したクラス作っちゃうんですか?
デストラクタが virtual ぢゃないのに?
class B : public A, private std::list<hoge> なら
まだ許可の範囲かなぁ。
っていうか私なら list を継承しません、絶対に。

επιστημη [E-Mail] [HomePage] 2003/10/17(金) 16:09:54
> えー?ほんとに継承したクラス作っちゃうんですか?
> デストラクタが virtual ぢゃないのに?

up-castするつもりがないなら case-by-case で許せる。

'本当'に classB は 特殊な list<Foo> である と言えるなら許せるが、
単に classB はその内部に(複数の) Foo を持つ なのであれば継承すべきではない。

古いスレッドには追加発言できません。