我有多个类需要共享另一个类的单个实例。公开地,应该不知道这个类的存在。执行以下操作是否合适?(书面测试)
#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
是我正在尝试围绕其设计外观的库的一部分,并且其他类具有库中与 static 交互的成员hideme
。
另外,如果编写的头文件HiddenWrapper
没有相应的源文件,那是定义其静态成员的最佳位置吗?带有一个包含警卫。
有没有其他方法可以解决这个问题?据我所知(不是很远),我只能通过友谊来解决它,我对此很警惕。