我有一個類(比如說MyClass)和以MyClass的實例作爲參數的函數。 這些函數需要訪問MyClass的私有成員。 成員是私人的,因爲MyClass的用戶不需要了解成員。 但是,我不想製作MyClass的函數成員,因爲函數應該將幾個MyClass實例作爲參數,並且對稱處理這些爭論。我不想專門處理「這個」對象。只有靜態成員函數的朋友類作爲C++中的朋友模塊?
如果有一種模塊系統,所以我可以聲明一個包含函數作爲MyClass的朋友的模塊,我會很高興。但是C++中沒有這樣的東西。 一種方法是創建一個朋友類並使該類的功能成爲靜態成員。然而,很多人不推薦這種方式(例如Namespace + functions versus static methods on a class),因爲班級不打算用於這種用途。
這種情況下的任何設計解決方案?
是的,我知道。然而,作爲朋友宣佈17個功能(並且數量可能增加)似乎不是一個美麗的解決方案。 – strugi 2014-10-09 15:13:54
@strugi你真的有17種不同的東西,它們唯一的共性就是它們都將一個或多個'MyClass'實例作爲輸入?如果是這樣,並且如果它們中的任何一個都不能使用MyClass應該呈現的公共接口,那麼我認爲17個朋友函數是您設計的邏輯結果,並且在聲明它們時有意義(在該約束內)。 (有或沒有朋友聲明,我覺得這17個功能的想法有點令人不安。) – 2014-10-09 23:01:11