我有多個類需要共享另一個類的單個實例。公開地說,這個班級的存在應該是未知的。是否適合做類似以下的事情? (測試書面)類間共享變量C++
#include <iostream>
class hideme
{
private:
int a;
public:
void set(int b) { a = b; }
void add(int b) { a += b; }
int get() { return a; }
hideme() : a(0) { }
};
class HiddenWrapper
{
protected:
static hideme A;
};
hideme HiddenWrapper::A;
class addOne : public HiddenWrapper
{
public:
void add() { A.add(1); }
int get() { return A.get(); }
};
class addTwo : public HiddenWrapper
{
public:
void add() { A.add(2); }
int get() { return A.get(); }
};
int main()
{
addOne a;
addTwo b;
std::cout << "Initialized: " << a.get() << std::endl;
a.add();
std::cout << "Added one: " << a.get() << std::endl;
b.add();
std::cout << "Added two: " << b.get() << std::endl;
return 0;
}
對於它的價值,hideme
是我試圖圍繞設計一個門面庫的一部分,而其他類都從與靜態hideme
互動庫成員。
此外,如果爲HiddenWrapper
編寫的頭文件沒有對應的源文件,那麼定義其靜態成員的最佳位置是?有一名包括後衛。
有沒有其他方法可以解決這個問題?據我所能想象的(不是很遠),我只能用友誼來解決它,但我很謹慎。
當使用它的最後一個對象被銷燬時,該單個對象是否應該被銷燬?有私人成員和朋友的單身人士是否足夠? – pmr
我的規則總是公共繼承是IS A關係。當一個類需要成爲另一個類的更具體的實例時,可以使用它。你可以使用私有繼承,這會使它更好一點。另一種選擇是讓每個人都保留一個引用或共享指針。 – Jarryd
我已經在多個地方閱讀,以避免朋友,所以我一直在做。儘管如此,這是可能的。我現在正在研究組合,看起來它涉及共享引用或指針。謝謝 – user1758039