デストラクタ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
よつどもえ

デストラクタ

#1

投稿記事 by よつどもえ » 15年前

(この記事は管理人が復元しました)

もうひとつ質問です。
次のプログラムで
#include<iostream>
#include<cstring>

using namespace std;

class Musician{
public:
~Musician(); //非仮想デストラクタ:多様クラスについては推奨されない
//・・・
};
Musician::~Musician() {cout<<musician being destroyed \n;}

class Trumpeter:public Musician{
public:
~Trumpeter(); //これも非仮想デストラクタ
}
Trumpeter::~Trumpeter() {cout<<trumpeter being destroyed \n;}

int main(){
Trumpeter *pt;
Musician *pm;

pt=new Trumpeter; //TrumpeterはTrumpeterへのポインタにより指されている
delete pt; //ok:まずtrumpeter being destroyedをプリント
//次にmusician being destroyedをプリント

pm=new Trumpeter; //TrumpeterはMusicianへのポインタにより指されている
delete pm; //問題:musician being destroyedだけをプリント
}
をコンパイルしましたが、
Trumpeter::~Trumpeter : デストラクタ には戻り値の型を指定できません。
というエラーが出ました。
授業でやった通りのことを写したんですができません。
どなたか教えてください。

スキマ妖怪

Re:デストラクタ

#2

投稿記事 by スキマ妖怪 » 15年前

ケアレスミスでしょうけど。

class Trumpeter:public Musician{
// ...
}

じゃなくて

class Trumpeter:public Musician{
// ...
} ;

Poco

Re:デストラクタ

#3

投稿記事 by Poco » 15年前

> 授業でやった通りのことを写したんですができません。

授業でエラーが出ていなかったのなら、写し間違いです。
パッと見、
> class Trumpeter:public Musician{
> public:
> ~Trumpeter(); //これも非仮想デストラクタ
> }

ここの最後にセミコロン(;)がありませんが、それが原因では?

#前の問題が解決したら、解決ボタン押しておきましょうね。

名無し

Re:デストラクタ

#4

投稿記事 by 名無し » 15年前

class Trumpeter:public Musician{
public:
~Trumpeter(); //これも非仮想デストラクタ
}

クラスの最後に;セミコロンがない。
最初はよくあることかもしれない。
クラスはヘッダーに宣言をするのをおすすめする。

あと、ここで聞くのもいいけど、C++の本を買って読むことを進めます。

よつどもえ

Re:デストラクタ

#5

投稿記事 by よつどもえ » 15年前

ありがとうございます。

すいません、焦って見落としていました。

よつどもえ

Re:デストラクタ

#6

投稿記事 by よつどもえ » 15年前

。。

閉鎖

“C言語何でも質問掲示板” へ戻る