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

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

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

#1

投稿記事 by shig » 13年前

コード:

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' へは変換できません。
>コンストラクターはソース型を持てません、またはコンストラクターのオーバーロードの解決があいまいです。
と出てきて、実行できませんでした。派生クラスのインスタンスでは基底クラスのコンストラクタを呼べないのでしょうか?
理由と解決策を教えて下さい。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

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

#2

投稿記事 by h2so5 » 13年前

派生クラスでもコンストラクタを定義する必要があります。

コード:

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

閉鎖

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