亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

友元成員函數無法訪問類的private數據成員,這是怎么回事?


#ifndef COORDINATE_H

#define COORDINATE_H


#include<iostream>

#include"Circle.h"

using namespace std;


class Coordinate

{

friend void Circle::printMember(Coordinate &coor);

public:

Coordinate(int x,int y)

{

m_iX = x;

m_iY = y;

cout << "Coordinate(int x,int y)" << endl;

}

~Coordinate()

{

cout << "~Coordinate" << endl;

}

private:

int m_iX;

int m_iY;

};

#endif


#ifndef CIRCLE_H

#define CIRCLE_H


#include <iostream>

#include"Coordinate.h"

using namespace std;


class Coordinate;

class Circle

{

public:

void printMember(Coordinate &coor)

{

cout << coor.m_iX << "," << coor.m_iY << endl;

}

};

#endif


#include"Coordinate.h"

#include"Circle.h"

#include<iostream>

using namespace std;


int main()

{

Coordinate coor(4,5);

Circle c;

c.printMember(coor);


system("pause");

return 0;

}


正在回答

4 回答

至于原因應該和編譯器以及C++標準有關(我的開發環境是 ubuntu 15.10 + gcc,?-std 設置為 c++11
),總之,良好的編碼習慣可以避免很多莫名其妙的問題。

0 回復 有任何疑惑可以回復我~
#1

慕村3311326 提問者

真的是cpp的原因,不過還有一點不能亂包含頭文件,我在Circle.h中包含了Coordinate.h這樣不對,刪掉之后就解決了,謝謝啦!
2016-12-04 回復 有任何疑惑可以回復我~

C++ 面向對象編碼一般在 .h 文件中定義類,.cpp 文件中實現成員函數。樓主您的 Circle 類這樣實現就沒有問題:

- Circle.h

```cpp

#ifndef CIRCLE_H
#define CIRCLE_H

class Coordinate;

class Circle {
public:
? ?void printMember(Coordinate &coor);
};

#endif

```

- Circle.cpp

```c

#include <iostream>
#include "Circle.h"
#include "Coordinate.h"


using namespace std;
void Circle::printMember(Coordinate &coor) {
? ? ? ?cout << coor.m_iX << "," << coor.m_iY << endl;
}

```

0 回復 有任何疑惑可以回復我~

呃呃呃 我沒懂你的意思耶,printMember(Coordinate &coor)函數是類Circle中的啊,為啥要在類外定義,我在Circle類的h文件中添加了class Coordinate這一類的聲明啊,而且還引用了Coordinate類的頭文件噠

0 回復 有任何疑惑可以回復我~

要在在Circle類外定義printMember(Coordinate &coor)函數,因為在Circle類內Coordinate類還未定義。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C++遠征之模板篇
  • 參與學習       91140    人
  • 解答問題       325    個

本C++教程力求即學即會,所有知識以實踐方式講解到操作層面

進入課程

友元成員函數無法訪問類的private數據成員,這是怎么回事?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號