[語法] 有關 class 裡的 class

看板C_and_CPP作者 (洗髮精用完了)時間16年前 (2009/12/10 19:08), 編輯推噓2(208)
留言10則, 5人參與, 最新討論串1/1
抱歉 akasan 和 legnaleurc 我之前問題問得有點問題 已經修正了 就是說 有個 class 叫 innerT 它寫在 class T 裡面 那麼 在 innerT 裡的 member function 要怎麼呼叫 T 裡的 member function 呢 像是這樣子 #include <iostream> using namespace std; class T{ public: class innerT{ public: void boo(){ foo(); } }; T(int k){ _k = k; } innerT getInnerT(){ return innerT(); } void foo(){ cout << _k << endl; } int _k; }; int main(){ T t(3); T::innerT it = t.getInnerT(); it.boo(); } 就是那個黃色的那行 出現了以下的 error message cannot call member function `void T::foo()' without object 請問要怎麼樣 innerT 裡的 boo() 才可以存取到 T 的 foo() 呢 我不想要在 boo() 裡面又宣告一個新的 T 的 object 就想要直接印出我在 main 裡宣告的那個 3 就行了 謝謝大家的回答:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.249.226 ※ 編輯: averangeall 來自: 140.112.249.226 (12/10 19:08)

12/10 19:27, , 1F
錯誤訊息不夠白話嗎?
12/10 19:27, 1F

12/10 19:32, , 2F
可能是從 Java 轉職過來的吧
12/10 19:32, 2F
※ 編輯: averangeall 來自: 140.112.249.226 (12/10 19:50)

12/10 20:53, , 3F
t.getIT()置換成T::iT();不依靠指標或物件不會知道t<->it
12/10 20:53, 3F

12/11 00:24, , 4F
請問樓上是什麼意思呢:)
12/11 00:24, 4F

12/11 00:40, , 5F
意指getInnerT()回傳的是T::innerT();t,it沒有建任何關係
12/11 00:40, 5F

12/11 01:18, , 6F
應該說 T::innerT 不過就是另一個 class 而已
12/11 01:18, 6F

12/11 01:18, , 7F
除了它在 T 下面以外沒有任何關係 (不是 IS-A 也非 HAS-A)
12/11 01:18, 7F

12/11 01:19, , 8F
所以自然不能直接呼叫 foo()
12/11 01:19, 8F

12/11 10:29, , 9F
是這樣子 感謝回答
12/11 10:29, 9F

12/11 10:30, , 10F
已另一個方法解決 感謝:)
12/11 10:30, 10F
文章代碼(AID): #1B8DQXyZ (C_and_CPP)