warning C4150: deletion of pointer to incomplete type 'xxx'; no destructor called 的解决办法
2014-02-15 23:13
781 查看
下面的代码会导致这个问题:
class XX;
XX *pX = new XX();
delete pX; // Warning C4150
以上的代码会导致这个C4150警告, 原因就是你的类声明不完整, 编译器只是把A加入到符号表并标记A为一个class,编译器并不知道类的大小,成员函数等其他信息。
如果只是声明指针, 在特定平台下指针的大小是确定的所以没有问题。 但是如果调用delete来删除的时候,
就需要知道它的信息了, 比如就是这个类的析构函数和这个类在整个内存块中的大小。
解决方法就是把声明了class XX具体信息的头文件加上去。
class XX;
XX *pX = new XX();
delete pX; // Warning C4150
以上的代码会导致这个C4150警告, 原因就是你的类声明不完整, 编译器只是把A加入到符号表并标记A为一个class,编译器并不知道类的大小,成员函数等其他信息。
如果只是声明指针, 在特定平台下指针的大小是确定的所以没有问题。 但是如果调用delete来删除的时候,
就需要知道它的信息了, 比如就是这个类的析构函数和这个类在整个内存块中的大小。
解决方法就是把声明了class XX具体信息的头文件加上去。
相关文章推荐
- Linux进程浏览器htop安装与使用
- Can't find file: './mysql/plugin.frm' (errno: 13)[mysql数据目录迁移错位]错误解决
- 自媒体如何在三大平台赚钱
- iOS uiscrollView 嵌套 问题 的解决
- 如何部署war文件到tomcat下
- 各软件对打车顾客和出租司机的影响
- 网络推广之论坛营销发帖推广
- 以主题域规划DW
- 迭代模式(Iterator Pattern)
- ssh加密方式和telnet
- Wince之路:5.指数坐标系
- NSOperation与performSelectorOnMainThread在不同线程中更新界面
- HDUOJ-1203 I need a offer(01背包)
- POJ 3164 Command Network
- ubuntu samba windows
- 黑马程序员-JAVA高级(IO输入与输出)PART4
- Sudo 用户权限管理
- 初试mysql5.7.2新特性:多源复制(MySQL 5.7 multi-source replication)
- 无线网卡与无线上网卡有什么区别
- 部分电脑安装升级 ubuntu 12.04 后无法挂起问题的解决(挂起无法唤醒同样有效)