C 之友元函式不能訪問類的私有成員

2021-09-24 22:45:45 字數 1229 閱讀 9376

無法解決的問題:類中宣告,類外定義的成員函式,導致無法訪問類中的私有成員函式

去掉using namespace std;  改變#include 啥的都沒用

蒼了個天,走過路過的幫個忙?

學c++嗎,令人頭禿的那種,呵呵

#include using namespace std;

template class complex

friend ostream & operator<<(ostream &out, complex &c3)

public:

complex operator+(complex &c2)

private:

t a;

t b;

};// 建構函式寫在了類的外部

template complex::complex(t a, t b) // 類的函式,需要加網域名稱

template complex::printcom()

void main()

system("pause");

return;

}

**中,將類的建構函式在類中進行宣告後放到類的外部進行定義,但是有了以下乙個讓我呵呵的錯誤

error c2248: 「complex::complex」: 無法訪問 private 成員(在「complex」類中宣告)

我對int型別的類 c1 c2賦值怎麼就不能夠了?

#include using namespace std;

template class complex

friend ostream & operator<<(ostream &out, complex &c3)

public:

complex(t a, t b)

void printcom()

complex operator+(complex &c2)

private:

t a;

t b;

};// 運算子過載的正規寫法

// 過載 << >> 只能用友元函式, 其他的運算子過載都要寫成成員函式,不要濫用友元函式

/*ostream &operator<<(ostream &out, complex &c3)

*/void main()

system("pause");

return;

}

走過路過的朋友幫個忙?

c 全域性函式做友元可訪問類的私有成員

1.未設定友元時 不設定友元的情況,類外的全域性函式無法訪問私有成員 2.設定了友元後 設定了友元後 include include using namespace std class building private string m pub void fun int main 3.示例三 和示例...

C 怎樣訪問私有成員函式

我知道的大概是三種方法 通過位址進行訪問 通過友元函式 通過友元類 第二種和第三種是比較常見的做法,第一種可能不太常見 這種方法能夠使用只要是因為類的儲存機制,類內只有成員變數和虛函式,所以可以利用位址來進行訪問。即通過a a int a 來實現 includeusing namespace std...

c 之友元函式和友元類

友元函式提供了不同類的成員函式之間 類的成員函式與一般函式之間進行資料共享的機制。通過友元,乙個不同函式或另乙個類中的成員函式可以訪問類中的私有成員和保護成員。友元函式 友元函式是可以直接訪問類的私有成員的非成員函式。它是定義在類外部的普通函式,它不屬於任何類,但需要在類的定義中加以宣告,宣告時只需...