大虾救命,超级简单的问题:theApp为什么不能再别的Class Function里被呼叫?

yanggubv 2001-03-24 09:00:00
我用mfc做好各Dialog based框架:Project name: JobAlloc,添加了个新的class。
调试显示出错:
E:\myproject\JobAlloc\AxDCommandLineInfo.cpp(33) : error C2065: 'theApp' : undeclared identifier
theApp为什么不能再别的Class Function里被呼叫?theApp不是Globals的么?
大虾救命

/////in JobAllocApp.h //////////////////////////////
class CJobAllocApp : public CWinApp
{
public:
CString m_strName;
.....

/////in JobAllocApp.cpp //////////////////////////////
CJobAllocApp theApp;
.....

/////in AxDCommandLineInfo.h ///////////////////////
class CAxDCommandLineInfo : public CCommandLineInfo
{
public:
CAxDCommandLineInfo();
~CAxDCommandLineInfo();
void Test();
};

/////in AxDCommandLineInfo.cpp /////////////////////
#include "stdafx.h"
#include "JobAlloc.h"
#include "AxDCommandLineInfo.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#endif

//////////////////////////////////////////////////////////////////////
// Konstruktion/Destruktion
//////////////////////////////////////////////////////////////////////
CAxDCommandLineInfo::CAxDCommandLineInfo()
{

}

CAxDCommandLineInfo::~CAxDCommandLineInfo()
{

}
//////////////////////////////////////////////////////
void Test()
{
theApp.m_strName = CString(" ");
};
...全文
145 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
firehorizon 2001-03-26
  • 打赏
  • 举报
回复
再加上((CJobAllocApp*)。。。。)
完美了!不好意思!
yanggubv 2001-03-25
  • 打赏
  • 举报
回复
多谢各位了,我试了一下,extern和AfxGetApp()都可以。
分不多,见笑了。

如果那位能比较一下这两个做法,就最棒了。
happydeer 2001-03-24
  • 打赏
  • 举报
回复
对呀、在JobAllocApp.h 文件中声明extern CJobAllocApp theApp;
然后在用到theApp的文件中include "JobAllocApp.h "就行了呀。
我这么干,不用调函数,省事。
sxbyl 2001-03-24
  • 打赏
  • 举报
回复
To:firehorizon 你可以试试。编译都不会通过。
firehorizon 2001-03-24
  • 打赏
  • 举报
回复
AfxGetApp()->m_strName=CString(" ");就可以了!
joke100 2001-03-24
  • 打赏
  • 举报
回复
方法就是使用CWinApp* AfxGetApp( ); 啦...
说一说为什么会出错吧...

theApp是全局变量这一点不错,它定义在JobAllocApp.cpp中.
你如果在其他的CPP文件中使用它,必须要用extern声明一下才能使用,否则变量在该文件中不可见...
其实对于其他全局变量也是这样的.

对于APP实例的使用还是要使用CJobAllocApp* pApp = (CJobAllocApp*)AfxGetApp();为好...


panda_w 2001-03-24
  • 打赏
  • 举报
回复
一般不这样调用的,你可以定义一个CJobAllocApp *pApp;然后
*pApp=(CJobAllocApp *)AfxGetApp();
pApp->m_strName = CString(" ");
sxbyl 2001-03-24
  • 打赏
  • 举报
回复
CJobAllocApp *pApp=NULL;
pApp=(CJobAllocApp *)AfxGetApp();
//AfxGetApp()可以得到CWinApp类的指针,要访问自定义成员的话,强制转换一下即可。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧