C++类型重定义错误的解决方法 |
您所在的位置:网站首页 › 变量编码错误怎么解决 › 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; } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |