C++ C类和x2B类的重新定义+;-Xcode
我用同样的错误搜索了其他一些页面,但是我的代码没有我能找到的任何问题。它可能只是我累了,稍微新的C++,如果很抱歉。 我有一个父类shape.h,它有三个派生类;矩形.h,三角形.h和圆形.h。父类是在第三行获取错误“重新定义‘Shape’”的类。就我的一生而言,除了从派生类调用形状构造函数的可能方式之外,我无法找出什么是错误的。请帮忙,你需要的任何信息请告诉我 形状h:C++ C类和x2B类的重新定义+;-Xcode,c++,xcode,inheritance,polymorphism,redefinition,C++,Xcode,Inheritance,Polymorphism,Redefinition,我用同样的错误搜索了其他一些页面,但是我的代码没有我能找到的任何问题。它可能只是我累了,稍微新的C++,如果很抱歉。 我有一个父类shape.h,它有三个派生类;矩形.h,三角形.h和圆形.h。父类是在第三行获取错误“重新定义‘Shape’”的类。就我的一生而言,除了从派生类调用形状构造函数的可能方式之外,我无法找出什么是错误的。请帮忙,你需要的任何信息请告诉我 形状h: #包括 class Shape { public: //constructors Shape();
#包括
class Shape
{
public:
//constructors
Shape();
Shape(float a);
Shape(float a, float b);
//Returns
float area();
float perimeter();
protected:
float base;
float height;
float radius;
};
Shape.cpp:#包括“Shape.h” 除了不同的计算之外,所有派生类都是相同的,所以这里是圆。h:
#包括“Shape.h” Circle.cpp:
#包括“Circle.h”
在
Circle.cpp
Shape.h
中间接包含两次,并导致所述编译错误
添加到标题中。例如,Shape.h
应为:
#ifndef SHAPE_H
#define SHAPE_H
// Put your Shape class here
#endif
另一种方法是使用
#pragma一次
在Shape.h
的开头,如果您的编译器支持的话。谢谢!但是出于好奇,你知道到底是什么让它得到了错误吗?@user6383357在Circle.cpp
中,没有保护Shape.h
间接包含了两次并导致了提到的编译错误。谢谢,这是有意义的,我认为可能是这样的。
class Circle: public Shape
{
public:
//constructors
Circle();
Circle(float a);
//Returns
float area();
float perimeter();
private:
};
//constructors
Circle::Circle():Shape()
{
}
Circle::Circle(float a):Shape(a)
{
}
//returns
float Circle::area()
{
return (3.14 * pow(radius,2));
}
float Circle::perimeter()
{
return (2 * 3.14 * radius);
}
#ifndef SHAPE_H
#define SHAPE_H
// Put your Shape class here
#endif