c++で、あるクラスのメンバ関数から、別のクラスのメンバ関すを呼びたいのですが、どのようにしたらできますか?
例えば、以下のような単純なコードを考えています。やりたいことは、Aのメンバ関数であるaaa()からBのクラスであるbbb()を呼びたいと思っています。その理由を少し説明します。ここでは、Aというクラスとmain関数はオープンソースコードを例えています。できるだけ、元のオープンソースコードを書き換えずに新たな機能を拡張したいと思っています。そこで、Bというクラスを使って、元のオープンソースコードに機能を拡張しようとしています。このような理由なので、bbb()という関数はaaa()という関数から呼びたいです。メイン関数には何も書き加えないのがベストです。
現状では、実行すると「this is aaa」という出力しか出ません。ここに「this is bbb」の出力を加えたいです。クラスAとBにある程度コマンドを追加して、解決できないでしょうか。
#include <iostream>
using namespace std;
//------------------------------------------------------
class A{
public:
void aaa();
virtual void bbb(){}
};
//------------------------------------------------------
//------------------------------------------------------
class B : public A{
public:
void bbb();
};
//------------------------------------------------------
//------------------------------------------------------
void A::aaa()
{
cout << "this is aaa \n";
bbb();
}
//------------------------------------------------------
//------------------------------------------------------
void B::bbb()
{
cout << "this is bbb \n";
}
//------------------------------------------------------
//------------------------------------------------------
int main()
{
A a;
a.aaa();
return 0;
}
//------------------------------------------------------
No.3ベストアンサー
- 回答日時:
Aを極力触りたくないのであれば、あまりカッコよくありませんが、AがBを継承するではどうでしょうか?
提示コードを以下のように書き換えれば、とりあえず期待する動きはすると思います。
//------------------------------------------------------
class B {
public:
virtualvoid bbb();
};
//------------------------------------------------------
//------------------------------------------------------
class A: public B{
public:
void aaa();
};
//------------------------------------------------------
※ その他はそのまま
回答ありがとうございます。
提示していただいたコードで、欲しい結果が得られました。
このとき、クラスBのvirtualはなくても大丈夫なようですね。
本当にありがとうございます。
No.2
- 回答日時:
A::aaa の中で出力する.
回答ありがとうございます。
おっしゃる通り、その方法が手っ取り早いです。
ただ、実際にやりたい事は、「this is bbb」という出力の代わりに、莫大なコードを加えたいのです。
Aという元のコードはあまり変更せずに、機能を拡張したいと思ってます。
その辺りを、説明したつもりだったのですが、伝わっていなかったらすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- JavaScript 指定したパスが現URLに含まれていたら特定要素を削除するJavascriptのコードを教えてください 2 2023/04/27 17:58
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- JavaScript jsonテキストデータの並び替えができるサービスを教えてください 2 2022/08/05 20:16
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- JavaScript JavaScript|特定URLだった時、特定の要素を変更するコードの書き方を教えてほしいです 2 2023/08/25 21:43
- Excel(エクセル) Excel VBA 3 2023/04/22 10:46
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
他の.CPPファイルに定義した関数を呼び出す方法について
C言語・C++・C#
-
char*を初期化したいのですが
C言語・C++・C#
-
複数のクラスで共通した関数を使いたい場合
C言語・C++・C#
-
-
4
静的でないメンバ関数の呼び出しが正しくありません
C言語・C++・C#
-
5
既定のコンストラクタがない?
C言語・C++・C#
-
6
クラスのアドレスを引数として渡したい
C言語・C++・C#
-
7
【C++】関数ポインタの使い方
C言語・C++・C#
-
8
画面を強制的に再描画させる方法
C言語・C++・C#
-
9
<unistd.h>をVisualStudioでつかえるようにする
C言語・C++・C#
-
10
適切な変換関数が存在しない???
C言語・C++・C#
-
11
ボタンの表示の色、フォントを変更したい
C言語・C++・C#
-
12
C++ protectedにアクセス不可
C言語・C++・C#
-
13
既定のコンストラクタがありません。というエラーについて
C言語・C++・C#
-
14
newしないオブジェクトについて
C言語・C++・C#
-
15
C++ 構造体の一括初期化 {0}
C言語・C++・C#
-
16
バッファとは何ですか
C言語・C++・C#
-
17
charからLPTSTRへの変換方法
C言語・C++・C#
-
18
関数の実体定義にヘッダファイルの2重定義防止方法が効かない?
C言語・C++・C#
-
19
1 つ以上の複数回定義されているシンボルが見つかりました
C言語・C++・C#
-
20
CStringのFindで文字列検索を行いたいのですが
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SwingでgetContentPaneのエラー...
-
C#でほかのファイルにある自作...
-
範囲外の数値を代入したらエラ...
-
javaでメインクラスが見つから...
-
Javaでのジェネリクス型パラメ...
-
ひとつのファイルにクラスは1つ?
-
C#のクラスライブラリでメッセ...
-
構造 他のクラスの構造体を別...
-
親クラスから呼ぶ
-
クラス間でのデータ参照
-
java-別クラスの変数の使い方を...
-
C# インターフェイスの実装
-
クラスについての基本的な質問です
-
swingについて。
-
関数内の変数に<summary>コメン...
-
c++,ある関数のクラスから別の...
-
JTable ArrayList 表示されない
-
C++でfriendクラスにしているの...
-
ある特定の値(変数)を持たせ...
-
親クラスから子クラスへアクセス。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数内の変数に<summary>コメン...
-
C#にて別クラスの関数を使いたい
-
c++,ある関数のクラスから別の...
-
親クラスから子クラスへアクセス。
-
C#でほかのファイルにある自作...
-
クラス間でのデータ参照
-
構造 他のクラスの構造体を別...
-
範囲外の数値を代入したらエラ...
-
ひとつのファイルにクラスは1つ?
-
C++でfriendクラスにしているの...
-
Java リフレクションについて
-
継承したクラス側のクラス名の取得
-
C# インターフェイスの実装
-
java-別クラスの変数の使い方を...
-
C#のクラスライブラリでメッセ...
-
visual studioのデザイナ画面で...
-
C# log4netの使い方
-
a href="..." とServlet
-
アップキャスト、ダウンキャス...
-
オブジェクトのデータをもとにX...
おすすめ情報