看板 C_and_CPP 關於我們 聯絡資訊
我在第二個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
loveme00835:你是指: b.ab 跟 a1 實際上是同一個物件 ? 04/06 13:59
Leeng:正是如此 04/06 14:01
問題已解決 看來B的private裡面宣告成 A *ab; void f2(){ (*ab).f1(); } constructor裡面加一行 this->ab = &ab; 即可 ※ 編輯: Leeng 來自: 61.230.180.76 (04/06 14:16)
FAITHY:但是為甚麼原來的語法有問題>< 04/06 23:21
FAITHY:看懂了 原來是一個是參數物件ab 一個是private物件 04/06 23:43
FAITHY:名子取一樣很容易沒注意搞混... 04/06 23:44