C 中類成員函式做友元函式為什麼報錯?

2021-09-29 16:31:43 字數 832 閱讀 4222

最近在使用友元函式來訪問私有成員時,遇到了問題,用乙個類成員函式做另乙個類的友元函式,但是一直報錯,提示為定義其中的乙個型別,思考良久(思路:既然友元函式在公有訪問許可權內,就應該可以訪問私有資料成員),在網上搜了很多的部落格,但是都沒有明確的答案,還好最後自己解決了問題,下面寫一下自己解決問題的過程,根據個人的理解寫了一下注釋(也不知道理解的對不對),大家如果有明確答案的請給我反饋一下,謝謝!

#includeusing namespace std;

class test1;//宣告識別符號

class test2

;void test2::fun(test1&t)//函式的定義(錯誤的根源)

class test1

;int main()

以上**會報錯,錯誤「error c2027: 使用了未定義型別「test1」,明明已經定義了test1型別,而且還提前宣告了,為什麼會提示未定義呢?就是找不到問題,最後將函式的定義放到最後就解決了問題,**如下:

#includeusing namespace std;

class test1;//識別符號

class test2

;/*void test2::fun(test1&t)//

*/class test1

;void test2::fun(test1&t)//函式定義放在最後(問題解決了)

int main()

個人理解都在**的注釋中闡述了,僅僅是個人理解,僅供參考,不一定正確,但是確實解決了問題。(如果有明確的理解,請幫忙反饋一下,謝謝!)

C 類成員函式做友元函式

成員函式做友元函式 只讓visit1做building的好朋友 只有visit1能訪問building的私有屬性 class building class goodgay 類內宣告,類外實現 class building building building goodgay goodgay void ...

C 友元函式 友元類 友元成員函式

眾所周知,c 控制對類物件私有部分的訪問。通常,公有類方法提供唯一的訪問途徑,但是有時候這種限制太嚴格,以至於不適合特定的程式設計問題。在這種情況下,c 提供了另外一種形式的訪問許可權 友元,友元有3種 友元函式 友元類 友元成員函式。通過讓函式成為類的友元 即 友元函式 可以賦予該函式與類的成員函...

友元函式 友元類 友元成員函式

注意友元成員函式定義的3個步驟 include include include using namespace std class a class c class a class b void c display const a a 3.最後定義display,此時才可以使用a的私有成員 void ...