C ++继承/重新定义错误
c++ inheritance /redefinition error
形状头文件
错误:'Rectangle' 的构造函数必须显式初始化没有默认构造函数的基 class 'Shape'
#ifndef Rectangle_hpp
#define Rectangle_hpp
#include "shape.hpp"
#include <stdio.h>
class Rectangle:public Shape{
double m_length;
double m_width;
public:
Rectangle(double length,double width):Shape("Rectangle"){}
double getPerimeter();
double getArea();
};
#endif /* Rectangle_hpp */
Shape cpp 文件
错误:重新定义 'Rectangle'
#include "Rectangle.hpp"
#include "shape.hpp"
#include "Rectangle.hpp"
Rectangle::Rectangle(double length,double width):Shape("Rectangle"){
m_length = length;
m_width = width;
}
double Shape::getPerimeter(){
return 2;
}
double Shape::getArea(){
return 2;
}
BASE class 头文件
#ifndef shape_hpp
#define shape_hpp
#include <stdio.h>
class Shape{
const char* m_name;
public:
Shape(const char* name);
virtual double getPerimeter()=0;
virtual double getArea()=0;
char getType();
};
#endif /* shape_hpp */
基础Classcpp文件
#include "shape.hpp"
Shape::Shape(const char* name){
m_name = name;
}
char Shape::getType(){
return *m_name ;
}
我制作了另一个 class "Circle",其布局与矩形相同,但没有出现任何错误,这些错误仅出现在矩形 class.. 我被卡住了并且有不知道为什么。
在您的头文件中,您定义了带有空主体的 Rectangle
构造函数 {}
。
在您的 CPP 文件中,您再次定义了 Rectangle
构造函数。它在抱怨重复。
你的头文件应该只包含声明:
Rectangle(double length, double width);
- 错误:'Rectangle' 的构造函数必须显式初始化没有默认构造函数的基 class 'Shape'
这个错误不应该存在,而且它不在我的机器中 (GCC 4.9.2)
- 错误:重新定义 'Rectangle'
在你的 Rectangle.hpp 中,你已经定义了 class Rectangle 的构造函数,你只需要声明它
Rectangle(double length,double width)
形状头文件
错误:'Rectangle' 的构造函数必须显式初始化没有默认构造函数的基 class 'Shape'
#ifndef Rectangle_hpp
#define Rectangle_hpp
#include "shape.hpp"
#include <stdio.h>
class Rectangle:public Shape{
double m_length;
double m_width;
public:
Rectangle(double length,double width):Shape("Rectangle"){}
double getPerimeter();
double getArea();
};
#endif /* Rectangle_hpp */
Shape cpp 文件
错误:重新定义 'Rectangle'
#include "Rectangle.hpp"
#include "shape.hpp"
#include "Rectangle.hpp"
Rectangle::Rectangle(double length,double width):Shape("Rectangle"){
m_length = length;
m_width = width;
}
double Shape::getPerimeter(){
return 2;
}
double Shape::getArea(){
return 2;
}
BASE class 头文件
#ifndef shape_hpp
#define shape_hpp
#include <stdio.h>
class Shape{
const char* m_name;
public:
Shape(const char* name);
virtual double getPerimeter()=0;
virtual double getArea()=0;
char getType();
};
#endif /* shape_hpp */
基础Classcpp文件
#include "shape.hpp"
Shape::Shape(const char* name){
m_name = name;
}
char Shape::getType(){
return *m_name ;
}
我制作了另一个 class "Circle",其布局与矩形相同,但没有出现任何错误,这些错误仅出现在矩形 class.. 我被卡住了并且有不知道为什么。
在您的头文件中,您定义了带有空主体的 Rectangle
构造函数 {}
。
在您的 CPP 文件中,您再次定义了 Rectangle
构造函数。它在抱怨重复。
你的头文件应该只包含声明:
Rectangle(double length, double width);
- 错误:'Rectangle' 的构造函数必须显式初始化没有默认构造函数的基 class 'Shape'
这个错误不应该存在,而且它不在我的机器中 (GCC 4.9.2)
- 错误:重新定义 'Rectangle'
在你的 Rectangle.hpp 中,你已经定义了 class Rectangle 的构造函数,你只需要声明它
Rectangle(double length,double width)