C++类型重定义错误的解决方法

当我们想在.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;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值