プロが教えるわが家の防犯対策術!

別の方の質問を拝見して不明点があったので質問します。

class House{
protected:
 int budget;
public:
 House(int x):budget(x){}   (※A)

 省略
}


class Basho:public House{
private:
 int yy;
public:
 Basho(int x,int y):House(x){
  yy = y;           (※B)
 }
 省略


Houseクラスのコンストラクタでメンバ変数への引数の値の代入を※Aの様にブロックの前に記述する方法があることを知りました。(上記プログラム中の※A)
BashoクラスはHouseクラスを継承したもので、コンストラクタで引数yをメンバ変数yyに代入しています(※B)が、これを※Aの様にブロックの前に記述するにはどの様に書けば良いのでしょうか?

 Basho(int x,int y):House(x):yy(y){
 Basho(int x,int y):yy(y):House(x){

試しに上記の様に書いてみたのですがエラーになってしまいました。

A 回答 (2件)

カンマで区切ります。



Basho(int x,int y):House(x), yy(y){
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
自身のメンバ変数の初期設定と、親クラスのコンストラクタ呼び出しを同じ様にかけばよかったのですね。
修正してコンパイルできることを確認しました。

お礼日時:2015/09/17 18:36

勉強に使っている参考書とか情報サイトとかに書いてないですか?


「メンバイニシャライザ」「コンストラクタの初期化リスト」あたりで検索すればわかります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
C++を勉強中というわけでもないのです。件の質問の回答を書くためにいくつかの入門サイトを見て回ったのですが、本質問の様な記述例が見当たらなかった為、質問いたしました。

お礼日時:2015/09/17 18:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!