我想初始化一個對象中的成員(引用類型),指向另一個對象(不同類型)的私有成員。我使用friend
爲私人會員提供訪問權限。 (請耐心等待,我進一步解釋爲什麼我需要這樣做。)初始化朋友的引用成員到類私人成員
下面是我嘗試着手使用的代碼的最低版本,它顯然不起作用。現在很清楚,我只是試圖用這個代碼Aries a(t.Leo);
初始化引用,但是因爲這是在main()
內完成的,所以它不能編譯。
我在這裏和在互聯網上經歷了許多帖子(關於friend
和reference
的主題),但找不到解決問題的方法。我怎麼能做這個工作,或者我可以嘗試使用其他方法來正確綁定引用?
class Aries;
class Taurus {
friend class Aries;
public:
void setLeo(int inLeo) {
Leo = inLeo;
}
private:
int Leo;
};
class Aries {
public:
Aries(const int& inCancer) : Cancer(inCancer) {}
private:
const int& Cancer;
};
int main() {
Taurus t;
Aries a(t.Leo); // Intention: initialize (bind) the Cancer member with t's Leo.
}
注意我知道足夠的C++理解爲什麼上述做法被認爲是可疑的或壞的。
我正在研究一個硬件模擬環境中的研究項目,其中測試平臺是用C++編寫的。該項目的目標是將班級(私人)成員顯示爲波形。這樣做的唯一可靠方法是將「波形制造者」類作爲測試臺對象的friend
,然後讓它「追蹤」私有成員(通過創建如上所述的reference
)。在測試平臺中提供getter方法的另一種方法是不切實際的,因爲這個項目將使用20年的遺留代碼。
耐人尋味的名稱混淆... – Chowlett
@Chowlett哈哈,富酒吧巴茲是不夠的時候。 –