STLのlistクラスから派生クラスを作る – プログラミング – Home

STLのlistクラスから派生クラスを...
 
通知
すべてクリア

[解決済] STLのlistクラスから派生クラスを作る


iwamu
 iwamu
(@iwamu)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

はじめまして。iwamuといいます。

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

#include ClassA.h
#include <list>

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

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

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


引用未解決
トピックタグ
iwamu
 iwamu
(@iwamu)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

環境を書くのを忘れていました。すみません。

Win98 VC++6.0 MFC


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

class ClassB : public ClassA, public std::list<なにか> {
...
};


返信引用
iwamu
 iwamu
(@iwamu)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

επιστημηさん、返答ありがとうございました。

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

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

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


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 22年前
投稿: 830
 

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


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

> えー?ほんとに継承したクラス作っちゃうんですか?
> デストラクタが virtual ぢゃないのに?

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました