C++类型重定义错误的解决方法
来源:互联网 发布:28岁未成年网络剧 编辑:程序博客网 时间:2024/04/28 22:55
当我们想在.h声明中定义成员变量,有时会报类型重定义错误,如果不是工程中真的重复定义了多个同名类,那么多半是没有给该类的头文件加条件指示符#ifndef,条件指示符#ifndef 最主要的目的就是防止头文件的重复包含和编译,这样才能保证头文件被多个其他文件引用时,内部的数据不会被多次定义而造成错误。解决方法有两种:
方法一:在报类型重定义的类的头文件,最上方加两行:
#ifndef XXXX_H#define XXXX_H
最下方加一行:
#endif //XXXX_H
(XXXX_H是xxxx.h的大写形式)
在生成一下,重定义的错误就不见了。
方法二:有的时候就是忘记加方法一种的条件指示符,还不想报错,该怎么办呢,可以在声明该成员变量的头文件中不去#include该类,而是定义一个同名类class XXXX;然后声明一个指针XXXX *m_pXxxx;接着,在.cpp文件中#include该类,然后new一个该类型的指针m_pXxxx=new XXXX();接下来直接使用m_pXxxx即可,这时有没有方法一中的条件指示符都不会报错了。
例如:在GoScanClass.h中定义的一个类GoScan,想在depthview.cpp中使用,如何在depthview.h中声明成员,在depthview.cpp中定义变量呢?如下:
/*depthview.h*/
//#include "GoScanClass.h"class GoScan;......public:GoScan *m_pScanValue;
/*depthview.cpp*/
#include "GoScanClass.h"DepthView::DepthView(QWidget *parent):QWidget(parent){m_pScanValue = new GoScan();m_pScanValue->OpenAndStart();//OpenAndStart()是GoScan类的一个方法......}DepthView::~DepthView(){delete m_pScanValue;m_pScanValue = NULL;}
0 1
- C++类型重定义错误的解决方法
- 类型重定义冲突的解决方法
- 类型重定义的一个解决方法
- 关于c/c++中的类型重定义错误的自己的理解
- 关于类型重定义错误
- error C2011: "xxxx"类型重定义的解决方法
- sb的类型重定义错误 redefinition of ‘class
- C++ 错误error C2011:类型重定义的解决办法
- winsock2.h中重定义错误解决方法
- winsock2.h中重定义错误解决方法
- C语言重定义不同的基类型
- VS2008里 struct 类型重定义 错误
- VS2008里 struct 类型重定义 错误
- 编译器错误C2011类型重定义小记
- C++错误:重定义 不同的存储类 二次定义的解决方法
- 类型的良性重定义
- C语言中重定义 错误
- 集成第三方模块编译时类型重定义冲突的解决方法
- 跨域上传文件
- 7.5.2
- 超多Android资源站整理 值得一看
- shell多线程脚本
- 分布式锁实现方式二 基于Redis的分布式锁
- C++类型重定义错误的解决方法
- Hibernate主键生成策略
- writing-mode && direction
- 如何让孩子避免近视
- 2017 ICM/MCM B题(离散型) Merge After Toll
- 欧拉函数 HDOJ 1286 找新朋友
- 布局屏幕分类
- 在北京的花钱史-被骗史?
- 设计模式练习(12)——职责链模式