运行类时出错

Error running classes

本文关键字:出错 运行      更新时间:2023-10-16

你好,我现在正在学习一些c++,我似乎被困在课堂上了。我做了这个程序,我需要得到一片披萨的价格。只是我不想输入数据,只是静态数据已经到位。

代码如下:

#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;
}

得到以下错误:

错误1错误C3867: 'Pizza::setSize':函数调用缺少参数列表;使用'&Pizza::setSize'创建一个指向成员c:usersjorgedocumentsvisual studio 2013projectsobject1对象合成

错误2错误C3867: 'Pizza::setPrice':函数调用缺少参数列表;使用'&Pizza::setPrice'创建一个指向成员c:usersjorgedocumentsvisual studio 2013projectsobject1对象合成

你的问题是行

cout << myPizza.costPeSqIn(myPizza.setSize, myPizza.setPrice);
代码末尾的

。你的编译器抱怨,因为setSizesetPrice是函数,但你没有为它们提供参数。无论如何,我怀疑你一开始是想这么做的。

实际上我认为你想要的是:

inline double costPeSqIn()
{
    return size * price;
}

作为costPeSqIn函数的实现,上面有错误的行应该是

cout << myPizza.costPeSqIn();

这样对我来说更有意义。


你目前传递setter函数到costPeSqIn的方式没有意义,你原来的costPeSqIn声明了一个双返回类型,但没有返回任何东西。


至于析构函数的问题,你得到:

~Pizza();

,因此声明了析构函数。一旦你自己声明了析构函数,编译器就不会自动为你生成一个,但是因为你在任何地方都没有定义,或者你的代码格式不好。

要解决这个问题,你必须提供它的定义,例如:

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