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

C++ compiler error definition of implicitly declared

本文关键字:编译器 错误 定义 声明 C++      更新时间:2023-10-16

大家好,今天我的代码有问题。我创建了一个计算方形圆形和矩形面积的程序。具有形状的基类。其中 UML 将 shape 作为抽象类,其中包含 public area():d ouble、getName():string,和 getDimensions:string,从具有受保护高度和宽度的形状派生的矩形,以及一个公共矩形(h:double,w:double),然后是从矩形派生的正方形,只有一个公共正方形(h:double),最后是从具有私有半径的形状派生的圆, 和一个公共圈子(r:double)。到目前为止,我的代码已经走得很远,但在我的形状中.cpp文件在第 10 行收到一个错误,上面写着 shape.cpp:10:错误:隐式声明的"constexpr shape::shape()"的定义 形状::形状()

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

形状.cpp文件:

#include "shape.h"
#include "circle.h"
#include "rectangle.h"
#include "square.h"
#include <QDebug>
#include <QString>
#include <iostream>
using namespace std;
shape::shape()
{
};

感谢您的帮助

您需要将

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

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

shape::shape()
{
}

末尾没有分号。