mfc视类中错误:IntelliSense: declaration is incompatible with。。。解决方案

Posted 和优秀的人一起成长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mfc视类中错误:IntelliSense: declaration is incompatible with。。。解决方案相关的知识,希望对你有一定的参考价值。

基本情况是我自己写了一个类:

class CDib

{。。。。}

然后在mfc自动生成的“工程名Dlg.cpp”中使用类CDib,我的工程名是MfcPictureProcessing,所以类是class CMfcPictureProcessingDlg,下面是视图类.h文件里:

class CMfcPictureProcessingDlg: public CDialogEx

{

。。。

CDib *Dlgdib;

CPalette* CreateBitmapPalette(CDib *pBitmap);

。。。

}

然后在.cpp中具体实现:

CPalette* CMfcPictureProcessingDlg::CreateBitmapPalette(CDib* pBitmap)

{

。。。。

Dlgdib....

}

这时候出现的问题是:

IntelliSense: declaration is incompatible with "CPalette *CMfcPictureProcessingDlg::CreateBitmapPalette(<error-type> *pBitmap)" (declared at line 24 of "e:\\visual_studio_workplace\\mfcpictureprocessing\\mfcpictureprocessing\\MfcPictureProcessingDlg.h")
 
error C2061: syntax error : identifier \'CDib\' e:\\visual_studio_workplace\\mfcpictureprocessing\\mfcpictureprocessing\\mfcpictureprocessingdlg.h
等等好多无厘头问题十几个
 
解决方法是在"工程名Dlg.h"中添加一句话:
class CDib;
这样在试图类文件中include这个类,然后用的的时候就不会出问题了。
 
总结:一般类目前还没有看到出问题的,只是在mfc视图类中使用自己定义的类时会出现,不管是作为函数的参数,还是单独实例化都会有问题,加上这句强制声明就没问题了~但是这个问题我搞了一天才明白
参考链接:
http://bbs.csdn.net/topics/391942352 解决了以后才看懂这个最后一个

以上是关于mfc视类中错误:IntelliSense: declaration is incompatible with。。。解决方案的主要内容,如果未能解决你的问题,请参考以下文章

MFC:CSting IntelliSense:没有重载函数的实例

MFC输出蛇行矩阵

MFC学习 单文档程序

MFC 单文档 视图类中CMyDoc* GetDocument() const编译时错误:缺少“;”(在“*”的前面)

错误 C2248:“CObject::CObject”:当我在 MFC 中调用 hDC.SelectObject 函数时,无法访问在“CObject”类中声明的私有成员

AnyCAD(MFC版)一些API介绍