前提・実現したいこと
c++において、下位クラスから上位クラスのメンバ変数のアクセスしたいです。
以下の2つのクラスを考えました。
Personクラスはint型の変数moneyとstring型の変数nameをそれぞれ1つずつ持ち、1つのメンバ関数pfを持ち、
Roomクラスは1つのint型メンバ変数point、2つのPersonクラスのメンバ変数p1, p2、1つのメンバ関数rfを持ちます。
ここで、Personクラスのメンバ関数からRoomクラスのメンバ変数とメンバ関数にアクセスしたいです。
どのようにすれば実現可能でしょうか。
発生している問題・エラーメッセージ (ファイル名:pra3.cpp)
pra3.cpp: In function ‘int main()’: pra3.cpp:5:3: error: expected primary-expression before ‘struct’ 5 | struct Room() { | ^~~~~~ pra3.cpp:29:8: error: aggregate ‘main()::Room r’ has incomplete type and cannot be defined 29 | Room r;
該当のソースコード
c++
1#include <bits/stdc++.h> 2using namespace std; 3 4int main() { 5 struct Room() { 6 int point = 10; 7 void rf() { 8 cout << "Room" << endl; 9 } 10 11 struct Person() { 12 int money = 100; 13 string name = "NAME"; 14 15 void pf() { 16 17 // Roomのメンバ変数pointにアクセスしたい 18 cout << money + point << " " << s << endl; 19 20 // Roomのメンバ関数rf()を利用したい 21 rf(); 22 } 23 }; 24 25 Person p1; 26 Person p2; 27 }; 28 29 Room r; 30 r.p1.pf(); 31 return 0; 32}
試したこと
相互参照、内部・外部クラスなどについて調べましたが、分かりませんでした。
補足情報(FW/ツールのバージョンなど)
g++ (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/29 12:02