仮想関数の宣言
Posted: 2010年7月24日(土) 10:35
(この記事は管理人が復元しました)
#include<iostream>
using namespace std;
class Musician{
public:
virtual void play(); //仮想関数
int experience(); //非仮想関数
virtual int practice(int how_long); //仮想関数
};
class BrassMusician:public Musician{
public:
//play()は宣言されない、Musicianバージョンを継承する
};
class Trumpeter:public BrassMusician{
public:
virtual void play(); //play()は再宣言される、そのため上書き使用をしなければならない
}; //再宣言のvirtualは任意
void Trumpeter::play() {/*・・・*/} //これを宣言したため、定義しなければならない
class Musician{
public:
virtual void setVolume(int value);
};
class Trumpeter:public Musician{
public:
void setVolume(int long); //誤り:Musician::setVolume()を上書きしたいが、パラメータの型が違っている
};
int main(){
Musician *pm=new Trumpeter;
pm->setVolume(5); //問題:pmはTrumpeterインスタンスを指しているが、Musician::setVolume()を起動
delete pm;
}
プログラミングの授業でこのプログラムを通そうとしたのですが、
次のようなコンパイルエラーが出ました。
Musician : class 型の再定義
Musician の宣言を確認してください。
Trumpeter : class 型の再定義
Trumpeter の宣言を確認してください。
認識できない型 Trumpeter が使われています。
直前のエラーを修復できません。コンパイルを中止します。
ある程度できているソースコードに手を加えてプログラムを完成させるという
授業なのですが、これらのコンパイルエラーがわかりません。
どなたか解答お願いします。
#include<iostream>
using namespace std;
class Musician{
public:
virtual void play(); //仮想関数
int experience(); //非仮想関数
virtual int practice(int how_long); //仮想関数
};
class BrassMusician:public Musician{
public:
//play()は宣言されない、Musicianバージョンを継承する
};
class Trumpeter:public BrassMusician{
public:
virtual void play(); //play()は再宣言される、そのため上書き使用をしなければならない
}; //再宣言のvirtualは任意
void Trumpeter::play() {/*・・・*/} //これを宣言したため、定義しなければならない
class Musician{
public:
virtual void setVolume(int value);
};
class Trumpeter:public Musician{
public:
void setVolume(int long); //誤り:Musician::setVolume()を上書きしたいが、パラメータの型が違っている
};
int main(){
Musician *pm=new Trumpeter;
pm->setVolume(5); //問題:pmはTrumpeterインスタンスを指しているが、Musician::setVolume()を起動
delete pm;
}
プログラミングの授業でこのプログラムを通そうとしたのですが、
次のようなコンパイルエラーが出ました。
Musician : class 型の再定義
Musician の宣言を確認してください。
Trumpeter : class 型の再定義
Trumpeter の宣言を確認してください。
認識できない型 Trumpeter が使われています。
直前のエラーを修復できません。コンパイルを中止します。
ある程度できているソースコードに手を加えてプログラムを完成させるという
授業なのですが、これらのコンパイルエラーがわかりません。
どなたか解答お願いします。