Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C类和x2B类的重新定义+;-Xcode_C++_Xcode_Inheritance_Polymorphism_Redefinition - Fatal编程技术网

C++ C类和x2B类的重新定义+;-Xcode

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();

我用同样的错误搜索了其他一些页面,但是我的代码没有我能找到的任何问题。它可能只是我累了,稍微新的C++,如果很抱歉。 我有一个父类shape.h,它有三个派生类;矩形.h,三角形.h和圆形.h。父类是在第三行获取错误“重新定义‘Shape’”的类。就我的一生而言,除了从派生类调用形状构造函数的可能方式之外,我无法找出什么是错误的。请帮忙,你需要的任何信息请告诉我

形状h:
#包括

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