前段时间要实习一个充值接口,创建了一个类(就叫类A好了),这个类A要和另外3个类进行交互,3个类对类A修改的数据是对其他类可见的。这种情况我想到了3个方法:
1.static 静态成员,静态成员为该类的所有实例所共享,3个类中各自创建一个类A的对象,它们对静态成员的修改对其他类可见。
2.全局变量,类A的头文件中添加 extern classA g_classA; 源文件中添加 classA g_classA; 3个类中添加头文件后直接通过g_classA //这种不推荐
3.单例模式
使用单例模式替代全局变量,3个类对类A的函数访问都是对类A的唯一实例的数据访问,修改对其他类自然可见了。单例模式是使用全局变量的常见替代方法。
static静态成员的例子如下:
class A
{
public:
static std::string m_strTestString;
};
string A::m_strTestString = "";
class B
{
public:
void SetValue(const std::string&temp)
{
m_Class1.m_strTestString=temp;
}
void display()
{
cout << m_Class1.m_strTestString << endl;
}
private:
A m_Class1;
};
class C
{
public:
void setvalue(const std::string& temp1)
{
m_Class2.m_strTestString=temp1;
}
private:
A m_Class2;
};
int main()
{
B zhc;
zhc.SetValue("123");
C ty;
ty.setvalue("456");
zhc.display();
}