首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++继承/redefinition错误

c++继承/redefinition错误
EN

Stack Overflow用户
提问于 2015-12-14 04:24:21
回答 2查看 1.5K关注 0票数 1

形状头文件

错误:“矩形”的构造函数必须显式初始化没有默认构造函数的基类“形状”

代码语言:javascript
复制
 #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 */

形状cpp文件

错误:重新定义“矩形”

代码语言:javascript
复制
#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;
}

基类头文件

代码语言:javascript
复制
#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 */

基类cpp文件

代码语言:javascript
复制
#include "shape.hpp"

Shape::Shape(const char* name){
    m_name = name;
}

char Shape::getType(){
    return *m_name ;
}

我做了另一个类“圆圈”,布局与矩形相同,没有任何错误,这些错误只出现在矩形类上。我被困住了,不知道为什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-14 04:29:14

在头文件中,使用空体Rectangle定义{}构造函数。

在CPP文件中,您再次定义了Rectangle构造函数。它在抱怨重复。

您的头文件应该只包含声明:

代码语言:javascript
复制
Rectangle(double length, double width);
票数 2
EN

Stack Overflow用户

发布于 2015-12-14 04:33:43

  1. 错误:“矩形”的构造函数必须显式初始化没有默认构造函数的基类“形状”

这个错误不应该存在,在我的机器上也不存在(GCC 4.9.2)

  1. 错误:重新定义“矩形”

在您的Rectangle.hpp中,您必须定义类矩形的构造函数,只需声明它

代码语言:javascript
复制
Rectangle(double length,double width)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34259752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档