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

zhugay zhugay 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
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就成了空的了。
静态变量为什么值会发生变化?如何解决?
...全文

相关推荐

C语言面试题,附有答案

分享此C语言面试题给即将找工作的同志,希望能给大家帮助哈,此文档理由n个经常问道的C的面试题,并且附有答案。

qiuyancoco

C++静态成员函数不能调用非静态成员变量(详解)

下面小编就为大家带来一篇C++静态成员函数不能调用非静态成员变量(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

weixin_38656395

详解c++ 静态成员变量

类定义时的静态成员只是声明,静态成员的定义和初始化要在类之外完成 C++的static关键字可修饰类成员变量/方法,表示变量/方法不从属于特定对象,而是属于类的。仔细琢磨静态成员变量,会发现其与C++的方式既相容也矛盾,具有特殊性。 先说相容的一面。·C/C++·有声明和定义的说法:声明给出签名,定义给出具体实现。对类型而言,声明不一定能知道其对象占用空间大小,但根据定义肯定能确定内存占用。说静态成员与C++方式是相容的,因为其初始化方式与方法的定义一致。下面是一个例子: // Foo.hpp namespace tlanyan { // 类声明和定义 class Foo { pri

weixin_38667403

C++类中的静态成员变量和静态成员函数的作用

C++类中的静态成员变量和静态成员函数的作用

wangyong_qiyexin

C++中静态成员函数与静态成员变量(static )

C++中静态成员函数与静态成员变量(static ) 这篇介绍了静态成员函数与静态成员变量,是我的读书笔记,我希望它够简短但又比较全面,起到复习的作用。如果有一些C++知识记不清楚了,它可以帮你很快回忆起来。 复习C语言的static关键字 (1)加在局部变量的前面使之成为静态局部变量,作用域还是在函数内部,可是生存周期延长了。 (2)加在全局变量的前面限定该变量作用域为文件作用域,就是说即使其他文件使用了extern扩展作用域也不行。这在C语言的多人项目中非常有用,避免了变量的重名。然而在C++中这一功能已经被命名空间取代,但是为了保持和C语言的兼容,static还是有这样的功能。 (3)

weixin_38591011
评论 4
收藏 已收藏
分享
返回顶部
zhugay
C++ 语言 65,214 成员 250,514 内容