首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

种的静态成员变量的值为什么改变了

2013-07-11 
类的静态成员变量的值为什么改变了?vc6 ,MFC一个dll project,有一个类class A{static CString m_strstati

类的静态成员变量的值为什么改变了?
vc6 ,MFC
一个dll project,有一个类
class A{
static CString m_str;
static void SetString(CString s); //给m_str赋值,单步调试发现的确是赋值成功了的。
};

在.cpp文件中
CString A::m_str;

编译连接正确。

一个app程序使用dll的类A
CString s = A::m_str;
编译连接,说m_str是unresoved, 为什么?
只有把m_str再声明一遍在app工程里
CString A::m_str;
链接没有问题了。

执行程序就有问题

单步调试:代码进入dll里时,m_str显示被赋值了,但返回到exe的代码时,m_str就成了空的了。
静态变量为什么值会发生变化?如何解决?

[解决办法]
静态成员变量被限制作用域了吧,
[解决办法]
>只有把m_str再声明一遍在app工程里
那样你exe的这个m_str和dll的m_str是两个没有关系的东西了。exe里的代码只看得到exe的m_str看不到dll的m_str。
[解决办法]
是有两个 CString A::m_str; 变量了.
你需要把 dll 中的变量导出, exe 再去链接.
不能连接不过就重新定义一个...

热点排行