运行类时出错 您好,我现在正在进行一些C++学习,我好像困在课堂上了。我制作了这个程序,我需要得到一片比萨饼的价格。简单地说,我还不想输入数据,只是静态数据已经存在

运行类时出错 您好,我现在正在进行一些C++学习,我好像困在课堂上了。我制作了这个程序,我需要得到一片比萨饼的价格。简单地说,我还不想输入数据,只是静态数据已经存在,c++,C++,代码如下: #include <iostream> #include <cmath> using namespace std; class Circle { public: Circle() { radius = 0; area = 0; } inline void setRadius(double r) { radius = r; } inline

代码如下:

#include <iostream>
#include <cmath>
using namespace std;

class Circle
{

public:

    Circle()
    {
        radius = 0;
        area = 0;


    }


    inline void setRadius(double r)
    {
         radius = r;
    }

    inline double getArea(double radius)
    {
        return 3.14 * pow(radius, 2);
    }

private:

    double radius;
    double area;`
};


class Pizza
{

private:


    double price;
    double size;
    double costperinch;
    Circle Object;


public:

    Pizza()
    {

        price = 0;
        size = 0;
        costperinch = 0;

    }

    ~Pizza();

    inline void setPrice(double p) 
    {
        price = p;
    }

    inline void setSize(double radius) 
    {
        size = Object.getArea(radius);

    }

    inline double costPeSqIn(double size, double price)
    {
        double costperinch = size * price;
    }

};


int main()
{

    Pizza myPizza;


    myPizza.setPrice(5.0);
    myPizza.setSize(3.14);

    cout << "The cost per square inch of the pizza is ";
    cout << myPizza.costPeSqIn(myPizza.setSize, myPizza.setPrice);

    return 0;
}
#包括
#包括
使用名称空间std;
班级圈子
{
公众:
圈()
{
半径=0;
面积=0;
}
内联空隙设置半径(双r)
{
半径=r;
}
内联双区域(双半径)
{
返回3.14*pow(半径2);
}
私人:
双半径;
双区`
};
高级披萨
{
私人:
双倍价格;
双倍大小;
双肋;
圆形物体;
公众:
披萨
{
价格=0;
尺寸=0;
costperinch=0;
}
~Pizza();
内联无效设置价格(双p)
{
价格=p;
}
内联空隙设置尺寸(双半径)
{
大小=Object.getArea(半径);
}
内联双倍成本(双倍尺寸,双倍价格)
{
双倍成本=尺寸*价格;
}
};
int main()
{
披萨我的披萨;
myPizza.setPrice(5.0);
myPizza.setSize(3.14);

你的问题是线路

cout << myPizza.costPeSqIn(myPizza.setSize, myPizza.setPrice);
作为
costPeSqIn
函数的实现,上面带有错误的行应该是

cout << myPizza.costPeSqIn();
一旦你自己声明了一个析构函数,编译器就不会自动为你生成一个析构函数,但是因为你没有任何定义,你的代码也不是格式错误

要解决此问题,您必须提供其定义,例如:

~Pizza()
{
    // whatever code you want
}

或者删除声明,这样编译器将自动为您生成默认构造函数。

我按照您所说的做了,但引用我的析构函数的未解析外部符号出现错误。我必须删除它才能使其正常工作,您知道为什么吗?谢谢!@user3709339最后更新了有关析构函数的信息。非常感谢.现在我明白了,我正试图通过输入所有内容来养成良好的编码习惯!
~Pizza();
~Pizza()
{
    // whatever code you want
}