• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

导入外部变量,extrend的问题!

hzy694358 2008-04-22 05:45:38
我定义了一个类CGlobal,在Global.h中加入如下代码#include "Users.h" CUsers curUser;
因为我想让curUser成为全局变量,所以在stdAfx.h中加入如下代码#include "Global.h"
但是当我在别的文件中中想引用curUser变量时,加入了如下代码extern CUsers curUser;
并对该变量进行操作(错误与该操作无关)
可是却提示错误:
"class CUsers curUser" (?curUser@@3VCUsers@@A) already defined in HospitalSystemDlg.obj()

请问这是什么原因,我所写的代码是不是有错误或者对方写错了,望高手指导!
(注:这是一个对话框的mfc程序,HospitalSystemDlg是主对话框)
...全文
105 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
gxhankzj 2010-05-29
我也碰到这个问题只在头文件中定义了CUsers curUser,在CPP中没有就出错误但是例子程序上却没有处错误太诡异了
回复
datoucaicai 2008-04-23
[Quote=引用 7 楼 hzy694358 的回复:]
因为#include "Users.h"已经包含在Global.h中了,所以在Global.cpp中应该是可以省略的吧[/Quote]

可以省略!
回复
arong1234 2008-04-22
[Quote=引用 7 楼 hzy694358 的回复:]
非常感谢,问题解决!
在.h文件中添加如下代码:
#include "Users.h"
extern CUsers curUser;
在.cpp文件中添加如下代码:
CUsers curUser;
这样即可
但是一楼说在Global.cpp中还要添加#include "Users.h"
因为#include "Users.h"已经包含在Global.h中了,所以在Global.cpp中应该是可以省略的吧
[/Quote]

CUsers curUser;
这个放再global.cpp或者其他cpp,如果你不放global.cpp,global.cpp可以省略
回复
hzy694358 2008-04-22
非常感谢,问题解决!
在.h文件中添加如下代码:
#include "Users.h"
extern CUsers curUser;
在.cpp文件中添加如下代码:
CUsers curUser;
这样即可
但是一楼说在Global.cpp中还要添加#include "Users.h"
因为#include "Users.h"已经包含在Global.h中了,所以在Global.cpp中应该是可以省略的吧
回复
arong1234 2008-04-22
这不是重复包含的问题,即使你加了这个也没有用,这时在多个cpp文件包含同一个头文件导致的问题。
你可以看看

http://blog.vckbase.com/arong/archive/2004/05/28/294.aspx
[Quote=引用 5 楼 lijianli9 的回复:]
主要是头文件重复包含的问题,你可以用#ifndef _MY_H
#deifine _MY_H
....
#endif
来处理。
[/Quote]
回复
lijianli9 2008-04-22
主要是头文件重复包含的问题,你可以用#ifndef _MY_H
#deifine _MY_H
....
#endif
来处理。
回复
datoucaicai 2008-04-22
CUsers curUser; 放到Global.cpp文件中,任何一对{}之外

其它如一楼所说

回复
sjdev 2008-04-22
cpp里面定义.h里面extern.
回复
jhs1982419 2008-04-22
这类编译错误就是头文件的典型提示,以后编程会经常碰到的 ;
回复
DDGG 2008-04-22
在Global.h中加入如下代码:
#include "Users.h"

extern CUsers curUser;


在Global.cpp中加入如下代码:
#include "Users.h"
#include "Global.h"

CUsers curUser;


stdAfx.h中加入如下代码
#include "Global.h"


当你在别的文件中中想引用curUser变量时,无需加入如下代码extern CUsers curUser; 直接可以使用 curUser,只要这个文件加入了对stdAfx.h的引用。
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-04-22 05:45
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……