質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

1236閲覧

ポインタと継承

seri

総合スコア422

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/08/06 21:07

編集2016/08/06 21:09

あるクラスをポインタで受け取り、インスタンスを作った場合
同じクラスのインスタンスを作成した際、クラス内の特定の変数や関数を継承することは可能でしょうか?

わかりにくいと思うので実際にコードで説明させていただきます

まずBase.hがあるとします

C++

1Base.h 2 3class Base:{ 4int _int; 5virtual void hoge(){}; 6}

次に、このBaseを継承したSean_1とゆうヘッダを作ります。

C++

1Sean_1.h 2#include "Base.h" 3class Sean_1 :public Base{ 4void hoge(){_int++;}; 5}

同様にSean_2を作成します。

C++

1Sean_2.h 2#include "Base.h" 3class Sean_2 :public Base{ 4void hoge(){_int++;}; 5}

これをApp.hから読み込みます

C++

1App.h 2 3#include "Base.h" 4#include "Sean_1" 5#include "Sean_2" 6 7class App:{ 8void main(){};//スタート処理 9vector<Base*> base;//ここでポインタ 10}

C++

1App.cpp 2 3void App::main(){ 4Base * s1=new Sean_1(); 5Base * s2=new Sean_2(); 6 7base.push_back(s1); 8base.push_back(s2); 9 10base[0].hoge(); 11base[0].hoge(); 12base[1].hoge();//ここで_intの値を3にしたい。 13 14} 15

このApp.cpp内で、baseにs1,s2を入れましたが、これらのs1,s2を呼び込むときBase.hの内容も読み込まれますが、このときにBase内の値を継承することは可能でしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

変数の値は継承しません。
Sean_1とSean_2をnewした時に別々にメモリ確保されます。
static変数を使うか、コンストラクタで渡してください。

投稿2016/08/06 22:52

nullbot

総合スコア910

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2016/08/07 04:04

あー、そんなコタエを期待してたのか。 それは継承じゃない、"共有"だ。
guest

0

最後がわからん。

base[1].hoge();//ここで_intの値を3にしたい。

Base::_int が protected なら

base[0].hoge(); // ここで s1->_int は 1
base[0].hoge(); // ここで s1->_int は 2
base[1].hoge(); // ここで s2->_int は 1

だけど、3にしたいのは 何?

投稿2016/08/06 21:37

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問