extern声明已定义的变量却出现LNK2001错误


建了个基于纯对话框的程序,在对话框类MainDlg中定义了public CString A;但在该对话框的弹出对话框NewDlg中用了extern CString也出现LNK2001错误,为什么呢?

8 个解决方案

#1


extern CString是全局的 咋会放到弹出的对话框。

#2


既然是全局变量,怎么能放到类里边?

#3


extern不是这样用的。你可以在NewDlg中这样访问A:
MainDlg* mainDlg = (MainDlg*)GetParent();
mainDlg->A

#4


MainDlg中定义了public CString A;

这也叫全局变量?

这不是公共成员变量吗?

正确做法

在MainDlg 的cpp文件中

#include ..
CString A;

在NewDlg 的cpp文件中

#include ...
extern CString A;

#5


谢谢大家,4楼的方法能用,但我定义了好多这样的变量,都和主窗口类内各控件关联起来了,改动不知BUG会不会多(我很菜)。我想直接在新窗口类中用主窗口类中的public成员变量怎么用。3楼的方法却报错,说MainDlg未定义,可是NewDlg.cpp中include了Main.h(类列表里是CMainDlg和CMainApp)了,我要用的是CMainDlg类里的public变量。

#6


搞错了,是CMainDlg,include头文件没C,晕了

#7


包含相关的头文件,在新窗口类中创建一个CMainDlg对象 ,然后通过成员操作符调用其成员变量。
呵呵 不知道有没说错  我稍微测试了一下

#8



合格的论坛游民
谢谢大家,4楼的方法能用,但我定义了好多这样的变量,都和主窗口类内各控件关联起来了,改动不知BUG会不会多(我很菜)。


知道总结帖子
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告