note: candidates are: virtual void CHandle::OnExcute(int, char*, int&, char*, int&)
2016-04-07 18:40
796 查看
在写纯虚函数的时候,发现一个诡异的问题,我再基类中定义了纯虚函数,但是在实现类中,怎么调用也不对,最后发现是引用的问题,我怀疑的gcc编译器的bug,但是没有深入研究。现记录如下:
编译报错: note: candidates are: virtual void XXXX
修改:把
#include <map> class A { protected: A(){}; public: virtual ~A(){}; virtual void do_something(int iMsgID,char* pBuffer,int& iLen) = 0; }; class B:public A { public: B(){}; virtual ~B(){} virtual void do_something(int iMsgID,char* pBuffer,int& iLen); }; void B::do_something(int iMsgID,char* pBuffer,int& iLen) { printf("do_something\n"); } int main() { std::map<int,A*> mpFunc; B BEx; mpFunc.insert(std::make_pair(1,&BEx)); int iMsgID = 1; char szBuffer[100] = {0}; int iLen = 0 std::map<int,A*>::iterator it = mpFunc.find(1); if(it != mpFunc.end()) { A* pA = it->second; if(pA) { pA->do_something(iMsgID,szBuffer,iLen); } } }
编译报错: note: candidates are: virtual void XXXX
修改:把
do_something(int iMsgID,char* pBuffer,int& iLen)
中的int& 引用方式改为<pre name="code" class="cpp">do_something(int iMsgID,char* pBuffer,int* iLen)
则正确,编译通过!!!
相关文章推荐
- 带中文的路径导致NSURL初始化一直为null的问题
- 1、汇编学习之进制转换
- open gop的提升画质很有限,建议默认值,即为关闭gop
- Git基本操作
- c语言基本概念
- Maven-web.xml参考
- listview数据下载后不更新
- HDU 1078 FatMouse and Cheese 记忆化搜索
- ie浏览器强制开启怪异模式(Quirks Mode)的解决方法
- 自定义->圆形进度条
- 获取Web项目路径
- 如何设置滚动新闻
- 自定义有下滑线的EditText
- 对象引用与对象的区别
- (Caffe)基本类InternalThread(三)
- 利用register.jar读取注册表信息
- Apache/Tomcat/JBOSS/Nginx区别
- C# ASP.NET MVC 图片盗链 加水印 的问题
- Setupdixxx deviceiocontrol 获取硬盘大小,硬盘序列号
- 动态规划 —— 阶乘