MFC 小问题 为啥书上可以这里却不可以的?书错,是书错吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC 小问题 为啥书上可以这里却不可以的?书错,是书错吗?相关的知识,希望对你有一定的参考价值。

void C燃えView::OnInitialUpdate()

CListView::OnInitialUpdate();//完全照抄书本,确认没错
m_pList=(CListCtrl*)&this->GetListCtrl();//完全照抄书本,确认没错


//错误信息

1>------ 已启动生成: 项目: 燃え, 配置: Debug Win32 ------
1>正在编译...
1>燃えView.cpp
1>f:\c++试验\燃え\燃え\燃えview.cpp(100) : error C2352: “CView::OnInitialUpdate”: 非静态成员函数的非法调用
1> f:\vs 2005 主程序目录\vc\atlmfc\include\afxwin.h(3893) : 参见“CView::OnInitialUpdate”的声明
1>f:\c++试验\燃え\燃え\燃えview.cpp(101) : error C2039: “GetListCtrl”: 不是“C燃えView”的成员
1> f:\c++试验\燃え\燃え\燃えview.h(12) : 参见“C燃えView”的声明
1>生成日志保存在“file://f:\C++试验\燃え\燃え\Debug\BuildLog.htm”
1>燃え - 2 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
呃,在VS2005环境下经无数实验证明是可以用汉字作变量名及其他任何东西

燃え全部替换了成c了,果然还是报同样的错,以下为新的错误信息

1>------ 已启动生成: 项目: 燃え, 配置: Debug Win32 ------
1>正在编译...
1>cView.cpp
1>f:\c++试验\燃え\燃え\cview.cpp(100) : error C2352: “CView::OnInitialUpdate”: 非静态成员函数的非法调用
1> f:\vs 2005 主程序目录\vc\atlmfc\include\afxwin.h(3893) : 参见“CView::OnInitialUpdate”的声明
1>f:\c++试验\燃え\燃え\cview.cpp(101) : error C2039: “GetListCtrl”: 不是“CcView”的成员
1> f:\c++试验\燃え\燃え\cview.h(12) : 参见“CcView”的声明
1>生成日志保存在“file://f:\C++试验\燃え\燃え\Debug\BuildLog.htm”
1>燃え - 2 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========

你的无数次试验可能不是很准确哦,,据我所知用汉字做变量名有时会出错的
按照编译错误的提示:“非静态成员函数的非法调用”,应该是要先产生类对象,然后调用该成员函数,如:
CListView myView;
myView.OnInitialUpdate();
m_pList=(CListCtrl*)&this->GetListCtrl();

试试改两样东东,一是把工程名中的汉字也都去掉;二是按照我上面说的先产生一个类对象
参考技术A 你把工程里面的 汉字 去掉试试?

正则表达式.+可以匹配空格,但是[.\w]+却不匹配,为啥?

>>>importre...print(re.match(r'[.\w]',''))#匹配单空格...print(re.match(r'.',''))...print(re.match(r'(.|\w)',''))...None<re.Matchobject;span=(0,1),match=''><re.Matchobject... >>>import re ...print(re.match(r'[.\w]', ' ')) # 匹配单空格 ...print(re.match(r'.', ' ')) ...print(re.match(r'(.|\w)', ' ')) ... None <re.Match object; span=(0, 1), match=' '> <re.Match object; span=(0, 1), match=' '> [\w.]应匹配\w或.。为什么[\w.]无法捕获空格? 展开

参考技术A 在正则表达式中.表示除换行外的所有字符,所以.+可以匹配空格
[]中括号表示字符集,在中括号中".*?+"等特殊字符就表示其自身,所以[.\w]就表示小数点字符加上\w表示的字符组成的字符集,并不包括空格

以上是关于MFC 小问题 为啥书上可以这里却不可以的?书错,是书错吗?的主要内容,如果未能解决你的问题,请参考以下文章

用visual studio做MFC的时候一个小问题

为啥我编译的MFC应用程序在其他电脑上不能运行?

为啥我的SSH可以用,而sftp却不可以用

正则表达式.+可以匹配空格,但是[.\w]+却不匹配,为啥?

为啥在84坐标系下,超图软件可以无需投影就可以计算面积,而arcgis却不可以

我想用MFC完成一个绘图功能