作者Leeng (老千)
看板C_and_CPP
標題[問題] 物件指標/記憶體問題
時間Wed Apr 6 13:49:21 2011
我在第二個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