2 回答

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
所以我覺(jué)得很奇怪,你這個(gè)代碼似乎沒(méi)有錯(cuò)。
你看,咱們來(lái)梳理下整個(gè)結(jié)構(gòu),確保我沒(méi)有看錯(cuò):
你先前置聲明了 class two,這是為了讓后面 class one 的 show 函數(shù)能用two引用作參數(shù)
后面是 class one 的類定義,但還不能在這里實(shí)現(xiàn) show 函數(shù)(因?yàn)檫€沒(méi)有 class two 的定義)
隨后是 class two 的類定義,在其中給 void one::show(two&) 以 friend 權(quán)限
最后是 one::show 的實(shí)現(xiàn),其中直接使用 two 的 private 成員 name 是沒(méi)有問(wèn)題的??!
我沒(méi)看錯(cuò)吧? ?你的代碼是這樣的沒(méi)錯(cuò)吧?
你確定是正確進(jìn)行編譯了嗎?

TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
奇怪,乍看沒(méi)什么問(wèn)題啊...
class two 中將 one::show(two&) 聲明為 friend 了,那么 one::show 應(yīng)該可以訪問(wèn) class two 中的 name。
而且 class one 的類定義在 class two 之前,class one 之前也有 class two 的前置聲明了,編譯應(yīng)該可以通過(guò)的呀!?...
- 2 回答
- 0 關(guān)注
- 1567 瀏覽
添加回答
舉報(bào)