
クラス内で上位クラス内メンバの値を変更
test2Objクラス内で
test1Objメンバ内のtest1Valueの値を2に変えたい
このような事は可能でしょうか?
================================
class Test2Obj{
public:
void changeValue(){
//ここでtest1Objメンバ内のtest1Valueの値を2に変えたい
}
};
class Test1Obj{
public:
int test1Value;
Test2Obj *test2Obj;
//コンストラクタ
Test1Obj(int tmp_test1Value){
setTest1Value(tmp_test1Value);
test2Obj=new Test2Obj();
}
void setTest1Value(int tmp_test1Value){test1Value=tmp_test1Value;}
};
int main(void){
Test1Obj *test1Obj=new Test1Obj(1);
printf(">>>%d\n",test1Obj->test1Value);
//ここでtest1Obj->test1Valueの値を変えたい
test1Obj->test2Obj->changeValue();
}
================================
もしコードに問題があればご指摘をお願いします。
No.1ベストアンサー
- 回答日時:
#include <stdio.h>
class Test2Obj;
class Test1Obj{
public:
int test1Value;
Test2Obj *test2Obj;
Test1Obj( int tmp_test1Value );
void setTest1Value( int tmp_test1Value ){ test1Value = tmp_test1Value; }
};
class Test2Obj{
Test1Obj *owner;
public:
Test2Obj( Test1Obj *it ) : owner( it ) {}
void changeValue(int v){ owner->setTest1Value( v ); }
};
Test1Obj::Test1Obj( int tmp_test1Value ){ setTest1Value( tmp_test1Value ); test2Obj = new Test2Obj( this ); }
int main(void){
Test1Obj *test1Obj = new Test1Obj( 1 ); printf( ">>>%d\n", test1Obj->test1Value );
test1Obj->test2Obj->changeValue( 2 ); printf( ">>>%d\n", test1Obj->test1Value );
}
おお!
凄い。
ちょっと複雑なのになると、クラスを書く順番と
関数を書く順番を注意しないとこんがらがっちゃいそうですね。
C++の奥深さを垣間見ました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
classの再定義エラーについて
-
vb作成したらでbeep音が鳴りま...
-
PHP、ヒアドキュメント内でのIF...
-
VBA コレクションに2次元配列...
-
PHPの名前空間インポートについて
-
file_existsが動作しない
-
共用体のサイズをsizeofで
-
VB.NETからVBAマクロ(引数)を呼...
-
Smarty変数の値をJavascript変...
-
「取得先」という表現について
-
Dosブロンプトでtabを出力したい
-
wordの差し込み印刷で文字...
-
shシェルスクリプト 空白行の...
-
excel access連携 このテーブル...
-
findstrのerrorlevel
-
バッチファイルでpingの結果を...
-
json_encodeが表示しない
-
開始と終了を指定して、その間...
-
phpでcookieがうまく保存されない
-
Google chart API 、PHP、MySQL...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA コレクションに2次元配列...
-
どういうプログラムを関数化を...
-
VB.NETからVBAマクロ(引数)を呼...
-
PHP正規表現の難題・preg_repla...
-
PHPの名前空間インポートについて
-
関数の入れ子ができない。
-
UNIX CP "で上書きしません"
-
配列の操作時にLNK2001外部シン...
-
number_formatが勝手に四捨五入
-
次のhtml・cssでspan内の文字を...
-
外部ファイル(テキスト)を取...
-
Let's Encryptで自動更新がされ...
-
可変変数にアロー演算子を使いたい
-
vb作成したらでbeep音が鳴りま...
-
CakePHPでの自作関数保存場所
-
正規表現に関する質問です。HTM...
-
String変数の文字列の検索方法
-
クラス内で上位クラス内メンバ...
-
Fatal error: Cannot use []
-
ExcelVBAで部分一致(*)をしたい
おすすめ情報