はじめまして。iwamuといいます。
STLのlistクラスと、自作のあるクラスから多重継承させて、
ある派生クラスを作りたいのですが、コンパイルエラーが
発生してしまいます。
以下にソースを示します。
#include ClassA.h
#include <list>
class ClassB : public ClassA, public list
{
・
・
・
};
これをコンパイルすると、
「定義されていない基本クラスが宣言されています」
というエラーがでてきました。
テンプレートクラスの派生は、通常のクラスの派生と
異なるところがあるのでしょうか。
環境を書くのを忘れていました。すみません。
Win98 VC++6.0 MFC
class ClassB : public ClassA, public std::list<なにか> {
...
};
επιστημηさん、返答ありがとうございました。
#include ClassA.h
#include Foo.h //←listの中身
#include <list>
class ClassB : public ClassA, public std::list<Foo>
{
・
・
・
};
以上のようにすることで、解決できました。
ありがとうございました。
えー?ほんとに継承したクラス作っちゃうんですか?
デストラクタが virtual ぢゃないのに?
class B : public A, private std::list<hoge> なら
まだ許可の範囲かなぁ。
っていうか私なら list を継承しません、絶対に。
> えー?ほんとに継承したクラス作っちゃうんですか?
> デストラクタが virtual ぢゃないのに?
up-castするつもりがないなら case-by-case で許せる。
'本当'に classB は 特殊な list<Foo> である と言えるなら許せるが、
単に classB はその内部に(複数の) Foo を持つ なのであれば継承すべきではない。