MFC重写CView的getDocument()函数没有实现多态,只是静态联编
2012-10-13 19:44
661 查看
class CsniffDoc : public CDocument
{
public:
void CapturePachet();
}
class majorView : public CFormView
{
public:
CsniffDoc* GetDocument() const;
}
CDocument* currentDoc=GetActiveView()->GetDocument();
currentDoc->capturePachet();//
系统总是提示capturepachet()不是CDocument的成员函数,后来将加红的两条语句改成如下:
CsniffDoc* currentDoc=(CsniffDoc*)GetActiveView()->GetDocument());
currentDoc->CapturePachet();
这样就可以啦。
为什么等号后面加个强制指针类型转换?我查看了一下CFormview及其基类CView,发现getDocument()函数并没定义为virtual。也就是说这里边并没有用到多态的知识,只是静态联编而已。
{
public:
void CapturePachet();
}
class majorView : public CFormView
{
public:
CsniffDoc* GetDocument() const;
}
CDocument* currentDoc=GetActiveView()->GetDocument();
currentDoc->capturePachet();//
系统总是提示capturepachet()不是CDocument的成员函数,后来将加红的两条语句改成如下:
CsniffDoc* currentDoc=(CsniffDoc*)GetActiveView()->GetDocument());
currentDoc->CapturePachet();
这样就可以啦。
为什么等号后面加个强制指针类型转换?我查看了一下CFormview及其基类CView,发现getDocument()函数并没定义为virtual。也就是说这里边并没有用到多态的知识,只是静态联编而已。
相关文章推荐
- C语言字符串库函数的实现也是笔试题常考的题目,以下代码没有严格测试,只是简单的实现:
- js实现单元格没有内容的行隐藏document.getElementsByTagName
- C++(多态实现原理)函数重写,重载,重定义
- C++(多态实现原理)函数重写,重载,重定义
- 关于对话框与GetDocument()函数的使用心得
- MFC获取路径的两个函数GetCurrentDirectory()和GetModuleFileName()
- 创建没有Document的MFC MDI应用程序
- MFC中如何使用OnTimer()函数实现定时控制
- MFC自动获取网络地址函数实现----广播地址,网关,子网掩码
- PHP利用func_get_args和func_num_args函数实现函数重载实例
- MFC中Http通信Post和Get方法实现
- 重写document.write实现无阻塞加载js广告(补充)
- MFC全局函数开局——AfxGetApp解剖
- 不通过getElementByName实现获取表单数据 (document.form表单的name值.input输入框的name值)
- AFX_MANAGE_STATE(AfxGetStaticModuleState())DLL导出函数包含MFC资源
- C++多态实现之虚函数列表.
- Android 在低版本sdk中没有getSupportedPreviewSizes和getSupportedPictureSizes函数怎么办?
- 面向对象,类的组合关系,继承,实现,方法重写,方法重载,this的使用,抽象方法和抽象类的比较,父类构造方法存在的意义,多态的是用和解析,各种访问修饰符
- 20、在Linux中实现类似windows中获取配置文件的函数GetProfileString
- C# 使用重载消息处理函数的方式,实现没有标题栏的窗体的拖动。