主对话框 是模态的对话框 类 CDIALOG1
非模态对话框 类 CDIALOG2
一个空类 Config
Config 类中 有个MAP 容器变量 定义代码如下
public:
map<CString,_Config> m_Config;
Config 类中有个DataUP()函数 操作改变 m_Config 的值
CDIALOG1,CDIALOG2 这两个类中都包含了Config类的头文件
CDIALOG1.CPP,CDIALOG2.CPP 中 都通过 定义个Config类的对象调用DataUP()修改m_Config的值
我的本意是想把这个m_Config 变量创建为全局变量 然后这两个CDIALOG1.CPP,CDIALOG2.CPP 都能修改 m_Config的值,可实际代码运行的时候 CDIALOG1.CPP,CDIALOG2.CPP 中调用DataUP()修改m_Config的变量不是同一个,就像CDIALOG1.CPP,CDIALOG2.CPP 分别定义了个m_Config各改各的值。
请问下怎样才能让CDIALOG1.CPP,CDIALOG2.CPP 修改的都是Config 类中的m_Config。
3 个解决方案
#1
包含了头文件只是让当前的类能够识别到所用到的类的标示,不是说就是用的同一个东西。如果你需要用的是同一个,有两种方法,第一种就是把都要用到的类定义成全局变量,比如在CDIALOG1.CPP中定义Config g_config;
而在CDIALOG2.CPP中声明extern Config g_config;表示用到的变量是其他cpp定义的,这样就保持操作的是同一个了。还有第二种就是用的设计模式里面的单例模式。在Config类中定义一个函数,比如:
static Config* GetInstance()
{
static Config config;
return &config;
}
然后再另外两个Cpp中都调用这个函数获取其指针,也能实现同样的效果
而在CDIALOG2.CPP中声明extern Config g_config;表示用到的变量是其他cpp定义的,这样就保持操作的是同一个了。还有第二种就是用的设计模式里面的单例模式。在Config类中定义一个函数,比如:
static Config* GetInstance()
{
static Config config;
return &config;
}
然后再另外两个Cpp中都调用这个函数获取其指针,也能实现同样的效果
#2
把m_config定义到app类中,然后就可以调用theApp.m_config
#3
把那两个map改为static
#1
包含了头文件只是让当前的类能够识别到所用到的类的标示,不是说就是用的同一个东西。如果你需要用的是同一个,有两种方法,第一种就是把都要用到的类定义成全局变量,比如在CDIALOG1.CPP中定义Config g_config;
而在CDIALOG2.CPP中声明extern Config g_config;表示用到的变量是其他cpp定义的,这样就保持操作的是同一个了。还有第二种就是用的设计模式里面的单例模式。在Config类中定义一个函数,比如:
static Config* GetInstance()
{
static Config config;
return &config;
}
然后再另外两个Cpp中都调用这个函数获取其指针,也能实现同样的效果
而在CDIALOG2.CPP中声明extern Config g_config;表示用到的变量是其他cpp定义的,这样就保持操作的是同一个了。还有第二种就是用的设计模式里面的单例模式。在Config类中定义一个函数,比如:
static Config* GetInstance()
{
static Config config;
return &config;
}
然后再另外两个Cpp中都调用这个函数获取其指针,也能实现同样的效果
#2
把m_config定义到app类中,然后就可以调用theApp.m_config
#3
把那两个map改为static