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 解决了以后才看懂这个最后一个

时间: 2024-08-02 11:04:53

mfc视类中错误:IntelliSense: declaration is incompatible with。。。解决方案的相关文章

[UE4插件使用-问题合集-02] error C4458: declaration of &#39;ModuleIndex&#39; hides class member 函数参数使用的参数名字与所在类中的某个变量名字重名了

error C4458 函数参数名与所在类的变量名重名 问题描述: 解决过程: 我这边报错的那行是宏定义,所以要找到宏定义处,是放到另一文件中的,可以看到这个宏定义是定义了函数的: 可以看到这个函数形参有一个是"ModuleIndex",没错,就是它与类中某个变量同名的.类中的那个同名变量我这里就不找了,你们知道就行了.实际上这样的C++语法是没有问题的,内层作用域中与外层作用域中同名的变量会隐藏外层的同名变量,但可能同样是版本的原因,新版本的UE4(我这里是4.24)对于这种情况视为

mfc 在VC的两个对话框类中传递参数的三种方法

弄了好久,今天终于把在VC中的对话框类之间传递参数的问题解决了,很开心,记录如下: 1. 我所建立的工程是一个基于MFC对话框的应用程序,一共有三个对话框,第一个对话框为主对话框,所对应的类为CTMDDDlg类.在主对话框上我放置了一个标签页(Tab Control)控件,其实现的功能是当单击标签提示A时进入页面A,即对话框A(所对应的类为CDialogChild1),单击B时进入对话框B(CDialogChild2). 整个工程的框架已经设计好了,在对话框A和对话框B上放置了许多控件,现在我想

非MFC的DLL中使用CString类

1.头文件添加 /* 非MFC DLL中使用CString */ #define _AFXDLL #include <afx.h> 注意:要定义在 #include<windows.h>之前,否则会报错 2.cpp 文件中添加 /* 非MFC DLL中使用CString */ // The following symbol used to force inclusion of this module for _USRDLL #ifdef _X86_ extern "C&q

【VC++学习笔记四】MFC应用程序中框架类的获取

一.文档类中 获取视图: 先获取主窗体,在根据主窗体获取视图 pMain->GetActiveDocument();注意类型转换 由于文档中可能包含多个视图,可以按照下面函数获取: CView*   CTestDoc::GetView(CRuntimeClass*   pClass) { CView*  pView; POSITION   pos=GetFirstViewPosition(); while(pos!=NULL) { pView=GetNextView(pos); if(!pVie

MFC如何在CMainFrame类中访问CxxxView视图类中的成员

在视图类中,我们可以通过调用AfxGetMainWnd()函数得到框架窗口的指针. 注意,需要在view类实现部分添加#include "MainFrm.h". 1 CMainFrame* pMFram = (CMainFrame*)AfxGetMainWnd(); 如果想在框架窗口中想调用CxxxView类中的函数,也需要得到相应View视图类的指针. 但是需要注意,这里不仅得包含xxxView.h,还需要包含xxxDoc.h头文件, 还需要注意头文件的顺序,先包含Doc.h,再包含

struct框架中实体类中属性的类型错误问题

在struct框架中,我们会写出实体类然后再sqlmap中进行映射,通常我们都知道 java中date类型有java.sql.date 和 java.util.date 经过细心发现,将对象生成为json对象时,json类会将date类型转换成java.util.date 如果在实体类中写成java.sql.date,就会抛出异常 下面我就来传个图 这里仅仅只需要把实体中date类型导入的包改成util的便不会出错 有人说util的包更常用,其实sql包中的直接输入就和我们平时写的时间的差不多,

基类中定义的虚函数在派生类中重新定义时,其函数原型,包括返回类型、函数名、参数个数、参数类型及参数的先后顺序,都必须与基类中的原型完全相同 but------&gt; 可以返回派生类对象的引用或指针

您查询的关键词是:c++primer习题15.25 以下是该网页在北京时间 2016年07月15日 02:57:08 的快照: 如果打开速度慢,可以尝试快速版:如果想更新或删除快照,可以投诉快照. 百度和网页 http://bbs.csdn.net/topics/380238133 的作者无关,不对其内容负责.百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面. 首页 精选版块 移动开发 iOS Android Qt WP 云计算 IaaS Pass/SaaS 分布式计算/Hadoop J

MFC--串口编程---WIN API的方式将串扣操作封装在线程类中

串口采集数据 本文档介绍的是如何获取串口原始数据并将原始数据解析成可处理或可展示的数据. 一.串口采集有很多方式: 1).MFC有一个专门的控件,直接编程采集,一个控件只能采集一个串口,而且串口名字比如是COM20可能就打不开(这里我没有实践,师兄给这样说的),波特率太高读数会出错. 2).利用Windows API通信函数(该工程里面就采用的这种方式) 3).利用Visual C++的标准通信函数_inp._inpw._inpd._outp等直接对串口进行操作. 4).第三方编写的通信类. 二

使用MFC CImage类和GDI+ Image加载并绘制PNG图片

一.使用MFC CImage类加载PNG图片        为了测试CImage绘制PNG图片的效果,我们用截图软件截得一张360的界面,然后使用PhotoShop等工具在图片的周边加上了透明的区域,然后保存成PNG图片文件.CImage首先从文件中加载,即 CImage* m_pImgBk; ...... m_pImgBk = new CImage; m_pImgBk->Load( _T("res\\bk.png")); if ( m_pImgBk->IsNull() )