为什么这不起作用?(C++)

Why does this not work? (C++)

本文关键字:C++ 不起作用 为什么      更新时间:2023-10-16

我有这段代码来计算形状的面积。我不明白为什么我在第 44 行收到错误"'双精度'之前的预期非限定 id"和"预期(双精度之前",用于"类三角形::三角形(双精度 s1、双精度 s2、双精度 s3(:多边形(s1、s2、s3、0.0({}。任何帮助将不胜感激。提前谢谢你。

    #include "Polygon.h"
    #include <iostream>
    #include <cmath>
    using namespace std;
    //Polygon constructor
    Polygon :: Polygon(double side1, double side2, double side3, double side4)
    {
        s1 = side1;
        s2 = side2;
        s3 = side3;
        s4 = side4;
    }
    //get area method
    double Polygon :: getArea()
    {
        float length, width, area;
        if (s1 == s2)
            {
                length = s1;
                width = s3;
            }
        else if (s1 == s3)
            {
                length = s1;
                width = s2;
            }
        else if (s1 == s4)
            {
                length = s1;
                width = s3;
            }
        area = length * width;
        return area;
    }
    //Triangle class
    class Triangle :: Triangle(double s1, double s2, double s3) : Polygon(s1,       s2, s3, 0.0) {}
    double Triangle :: getArea()
    {
        float s, area;
            s = (s1 + s2 + s3)/2;
            area = sqrt(s * (s - s1) * (s - s2) * (s - s3));
            return area;
    }
您需要

在此处删除单词class

class Triangle :: Triangle

当然,您需要确保在此之前声明class Triangle

使用以下代码片段。

#include "Polygon.h"
    #include <iostream>
    #include <cmath>
    using namespace std;
    //Polygon constructor
    Polygon :: Polygon(double side1, double side2, double side3, double side4)
    {
        s1 = side1;
        s2 = side2;
        s3 = side3;
        s4 = side4;
    }
    //get area method
    double Polygon :: getArea()
    {
        float length, width, area;
        if (s1 == s2)
            {
                length = s1;
                width = s3;
            }
        else if (s1 == s3)
            {
                length = s1;
                width = s2;
            }
        else if (s1 == s4)
            {
                length = s1;
                width = s3;
            }
        area = length * width;
        return area;
    }
    //Triangle class
     Triangle :: Triangle(double s1, double s2, double s3) : Polygon(s1,       s2, s3, 0.0) {}
    double Triangle :: getArea()
    {
        float s, area;
            s = (s1 + s2 + s3)/2;
            area = sqrt(s * (s - s1) * (s - s2) * (s - s3));
            return area;
    }