为什么我输入高低数据一直返回0

问题描述 投票:0回答:2

BASIC_SHAPE 类(抽象)

class BASIC_SHAPE
{
public:

    double GET_AREA(double _AREA) { AREA = _AREA; return AREA; }
    virtual double CALC_AREA() = 0;

private:
    
    double AREA =0;
};

圆圈类

class CIRCLE:public BASIC_SHAPE
{
public:

    CIRCLE() { RADIUS = 0; }
    CIRCLE(double _RADIUS) { RADIUS = _RADIUS; }
    virtual double CALC_AREA() {
        double TEMP2 = 3.14 * pow(RADIUS, 2);
        return GET_AREA(TEMP2);
    }
    
private:
    
    double RADIUS;
};

三角形类

class TRIANGLE: BASIC_SHAPE
{
public:

    TRIANGLE() { BASE = 0; HEIGHT = 0; }
    TRIANGLE(double _BASE , double _HEIGHT) : BASE{_BASE}, HEIGHT{_HEIGHT} {}
    virtual double CALC_AREA() {
        double TEMP = 1 / 2 * (BASE * HEIGHT);
        return GET_AREA(TEMP);
    }

private:

    double BASE, HEIGHT;

主要

CIRCLE SHAPE2;
TRIANGLE SHAPE3;

void main()
{
    double RAD;

    std::cout << "Enter a Circle Radius : ";
    std::cin >> RAD;
    CIRCLE SHAPE2(RAD);
    CIRCLE* LEAD1 = new CIRCLE(RAD);
    std::cout << "The Area is : " << LEAD1->CALC_AREA();

    double BASE , HEIGHT;

    std::cout << "\n\nEnter a Triangle Base : ";
    std::cin >> BASE;
    std::cout << "\nEnter a Triangle Height : ";
    std::cin >> HEIGHT;
    TRIANGLE SHAPE3(BASE, HEIGHT);
    std::cout << SHAPE3.CALC_AREA();
}

当我输入

BASE
&
HEIGHT

时,它一直返回零

我尝试过使用箭头运算符并用指针获取它,但没有任何效果,我尝试过使用指针和其他方法来给我答案或面积总和,但没有任何反应。怀疑是构造函数或抽象类,但我不知道怎么办??

c++ oop pointers data-structures visual-c++
2个回答
0
投票

问题来自于在三角形类的 CALC_AREA 函数中使用 1/2。也许这会导致被视为 0,因此该公式给出的最终答案为 0。


-1
投票

正如 @rturrado

1/2
的评论中指出的那样,是
0
0
乘以任何东西都是
0
。使用
0.5
1/2.0*...

另外,为什么你的

GET_AREA
方法为基类设置区域并返回设置的区域?您需要有不同的 getter 和 setter。 Getter 方法不应设置,类似地,setter 方法也不应获取。

此外,最好养成使用托管指针的习惯。

© www.soinside.com 2019 - 2024. All rights reserved.