[問題] 物件指標/記憶體問題

看板C_and_CPP作者 (老千)時間13年前 (2011/04/06 13:49), 編輯推噓3(302)
留言5則, 3人參與, 最新討論串1/1
我在第二個class,B的建構子 試著傳入物件記憶體位置(因為不想傳整份物件,會太大) 建構子裡面的ab可以讀到正確的x值(100) 但是f2()讀到的ab,是還未設定的private變數ab 所以印出亂數 我希望能將B(A &ab),指給B.ab 請問該怎麼指標? 謝謝 程式及印出結果如下: // A.h class A{ public: int x; A(){} A(int x){ this->x = x; } void f1(){ printf("x=%d\n", x); } }; class B{ public: B(A &ab){ ab.f1(); f2(); } private: A ab; void f2(){ ab.f1(); } }; // aaa.cpp int main(){ A a1(100); B b(a1); return 0; } //印出: x=100 x=2293576 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.180.76

04/06 13:59, , 1F
你是指: b.ab 跟 a1 實際上是同一個物件 ?
04/06 13:59, 1F

04/06 14:01, , 2F
正是如此
04/06 14:01, 2F
問題已解決 看來B的private裡面宣告成 A *ab; void f2(){ (*ab).f1(); } constructor裡面加一行 this->ab = &ab; 即可 ※ 編輯: Leeng 來自: 61.230.180.76 (04/06 14:16)

04/06 23:21, , 3F
但是為甚麼原來的語法有問題><
04/06 23:21, 3F

04/06 23:43, , 4F
看懂了 原來是一個是參數物件ab 一個是private物件
04/06 23:43, 4F

04/06 23:44, , 5F
名子取一樣很容易沒注意搞混...
04/06 23:44, 5F
文章代碼(AID): #1Dc_xbB_ (C_and_CPP)