C ++ write_function写入“ Nan”而不是适当的值

时间:2018-11-21 16:24:10

标签: c++

我有一个分配要用数字制作一个类,并且我必须使用构造函数来实现它。问题是我的写功能只能正确地写入给定电路的值,而不能写入极点或电路。而不是写“ nan”。

我添加了“调试提示”,以检查该功能是否正确计数了极点和电路。

#include <iostream>
#include <cmath>

class Figura
{
protected:
    double pole;
    double circuit;
public:
    virtual double funkcja_pole(double A) = 0;
    virtual double funkcja_circuit(double B) = 0;
    virtual void write() = 0;

    Figura(double, double);
};

class Circle: public Figura
{
private:
    double radius;
public:
    Circle(double);

void write()
{
    std::cout << "Radius = " << radius << std::endl;
    std::cout << "Pole = " << pole << std::endl;
    std::cout << "Circuit = " << circuit << std::endl;
}
double funkcja_pole(double A)
{
    pole = 3.14 * A*A;
    std::cout << "pole:" << pole << std::endl;
}
double funkcja_circuit(double B)
{
    circuit = 3.14 * 2*B;
    std::cout << "circuit:" << circuit << std::endl;
}
};

Figura::Figura(double POLE, double CIRCUIT):
    pole(POLE), circuit(CIRCUIT) {}

Circle::Circle(double RADIUS):
    radius(RADIUS), Figura(funkcja_pole(RADIUS),funkcja_circuit(RADIUS)) {}

int main()
{
    Circle my_circle(2);
    Figura *wsk;
    wsk = &my_circle;
    wsk->write();
}

结果:

1 个答案:

答案 0 :(得分:3)

您不返回计算值:

double funkcja_pole(double A)
{
    double pole = 3.14 * A*A;
    std::cout << "pole:" << pole << std::endl;
    return pole;
}

您应该重构代码,以使所有内容都井井有条:

class Circle: public Figura
{
private:
    double radius;
public:
    Circle(double);

void write()
{
    std::cout << "Radius = " << radius << std::endl;
    std::cout << "Pole = " << pole << std::endl;
    std::cout << "Circuit = " << circuit << std::endl;
}
private:
double funkcja_pole(double A)
{
    double pole = 3.14 * A*A;
    std::cout << "pole:" << pole << std::endl;
    return pole;
}
double funkcja_circuit(double B)
{
    double circuit = 3.14 * 2*B;
    std::cout << "circuit:" << circuit << std::endl;
    return circuit;
}
};

Figura::Figura(double POLE, double CIRCUIT):
    pole(POLE), circuit(CIRCUIT) {}

Circle::Circle(double RADIUS):
    Figura(funkcja_pole(RADIUS),funkcja_circuit(RADIUS)), radius(RADIUS) {}