C++存在重定义的解决办法

来源:互联网 发布:淘宝正品代购可信吗 编辑:程序博客网 时间:2024/06/08 15:27

进行c++代码规范化编程练习的时候,多个头文件之间进行相互引用就有可能导致某个或多个头文件的多次编译

编译器就会报错重定义


比如  TwoDimensionalShape.h中引用了 Square.h

#include "Square.h"class TwoDimensionalShape{public:virtual void show();virtual ~TwoDimensionalShape(){}};


同时Square.h文件中也引用了TwoDimensionalShape.h

#include"TwoDimenSionalShape.h"class Square:public TwoDimensionalShape{private:double side;  //正方形边长public:Square();  //默认构造函数Square(double side);  //带一个参数的构造函数void setSide(double side);  //设置边长函数double getArea();//获取面积void show();  //重写基类的输出信息函数virtual ~Square(){}};


这样在主函数中又得引用Square.h和TwoDimensionalShape.h

显然,头文件Square.h和TwoDimensionalShape.h进行了多次编译,编译器就会报错

 #include#include"Square.h"#include"TwoDimenSionalShape.h"using namespace std;int main(){TwoDimensionalShape t;Square s1;s1.setSide(6);Square s2(3);TwoDimensionalShape *merbers[3];merbers[0] = &t;merbers[1] = &s1;merbers[2] = &s2;for (int i = 0; i < 3; i++){merbers[i]->show();}return 0;}


解决方法是在头文件前面加#pragma once

这样就能保证头文件只编译一次

原创粉丝点击