C ++编译器错误定义隐式声明

时间:2014-12-11 01:41:53

标签: c++ qt compiler-errors

大家好,今天我的代码有问题。我创建了一个计算方形圆和矩形区域的程序。具有基类形状。其中UML的形状为带有public area()的抽象类:double,getName():string和getDimensions:字符串,从具有受保护高度的形状和宽度派生的矩形,以及一个公共矩形(h:double,w: double),后面是一个矩形的派生正方形,只有一个公共广场(h:double),最后是一个从私有半径的形状得到的圆和一个公共圆(r:double)。 到目前为止我的代码已经在我的shape.cpp文件中得到了很多,我在第10行得到一个错误,上面写着shape.cpp:10:错误:隐式声明的定义' constexpr shape :: shape()&# 39;  形状::形状()

这是我完整代码的链接:https://gist.github.com/anonymous/0eedd7719a34655488fb

shape.cpp文件:

#include "shape.h"
#include "circle.h"
#include "rectangle.h"
#include "square.h"
#include <QDebug>
#include <QString>
#include <iostream>
using namespace std;

shape::shape()
{

};

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

您需要将shape()构造函数添加到类声明中,如下所示:

#ifndef SHAPE_H
#define SHAPE_H
#include <QString>
#include <QDebug>

using namespace std;

class shape
{
public:

    shape();
    virtual double area()=0;

    virtual QString getName()=0;
    virtual QString getDimensions()=0;

    virtual~shape(){}

};
#endif

然后,您可以在shape.cpp中创建定义,如下所示:

shape::shape()
{

}

最后没有分号。