ページ 11

c++で派生クラスのオブジェクトを宣言するときに、基底クラスのほうで定義してあるコンストラクタの呼び出し方

Posted: 2012年7月02日(月) 15:28
by shig

コード:

class base{
protected:
	int bas;
public:
	base(int a){ bas = a;};
};

class sub : base{
};

int main()
{
	sub s(1);
	
	return 0;
}

基本クラス(引数1つのコンストラクタ)とその派生クラスを定義して、メイン関数で派生クラスのインスタンスを作成しようとしています。
実行しようとすると、
> 1 番目の引数を 'int' から 'const sub &' に変換できません。
>理由: 'int' から 'const sub' へは変換できません。
>コンストラクターはソース型を持てません、またはコンストラクターのオーバーロードの解決があいまいです。
と出てきて、実行できませんでした。派生クラスのインスタンスでは基底クラスのコンストラクタを呼べないのでしょうか?
理由と解決策を教えて下さい。

Re: c++で派生クラスのオブジェクトを宣言するときに、基底クラスのほうで定義してあるコンストラクタの呼び出し方

Posted: 2012年7月02日(月) 15:45
by h2so5
派生クラスでもコンストラクタを定義する必要があります。

コード:

class sub : base{
public:
    sub(int a) : base(a) {};
};