0

クラス Shape、Circle、Ellipse、Rectangle、Triangle を含む C++ プログラムを作成しました。すべてのクラスはクラス Shape のサブクラスです。それらの定義の構文は問題ありません。目に見えるエラーはありません。これはコードです:

#include "graphics.h"
//#include <iostream>
using namespace std;

const float Pi = 3.141;

float distance (int x1, int y1, int x2, int y2) {
    int x = x2 - x1;
    int y = y2 - y1;
    x = x * x;
    y = y * y;
    float total = x + y;
    float length = sqrt(total);
    return length;
}


class Shape {
public: 
    float area;  
    virtual void Area () = 0;
};

class Rectangle : public Shape {
public:
    int length, width;
    virtual void Area () {
        area = length * width;
    }
};

class Triangle : public Shape {
public:
    float a, b, c;
    virtual void Area () {
        float s = ((a + b + c) / 2);
        area = sqrt(s * (s - a) * (s - b) * (s - c));
    }
};

class Ellipse : public Shape {
public:
    int x, y; 
    float a, b; 
    virtual void Area () {
        area = Pi * a * b;
    }
};

class Circle : public Shape { 
public:
    int x, y; //Centre
    float radius; 
    virtual void Area () {
        area = Pi * radius * radius;
    }
};

class Line { //implement zigzag within Line
public:
    int x, y; //last point of line segment
};



//Function paintInterface to initalize the paint viewport and textboxes within the viewport
void paintInterface () {
    static int count = 0;
    //void initwindow (int width, int height, char * title)
    initwindow(1000, 800, "Paint");

    //void setbkcolor(int color)
    setbkcolor(WHITE);

    //void setcolor(int color)
    setcolor (BLACK);

    //void setfillstyle(int pattern, int color)
    setfillstyle (1, WHITE);

    //void bar(int left, int top, int right, int bottom)
    bar (0, 0, 1000, 800);

    //void outtextxy (int x, int y, char *textstring)
    outtextxy (2, 5, "New");

    //void rectangle(int left, int top, int right, int bottom)
    rectangle (0, 5, 35, 20);

    outtextxy (2, 25, "Circle");
    rectangle (0, 25, 40, 40);

    outtextxy (2, 45, "Rectangle");
    rectangle (0, 45, 67, 60);

    outtextxy (2, 65, "Triangle");
    rectangle (0, 65, 55, 80);

    outtextxy (2, 85, "Ellipse");
    rectangle (0, 85, 50, 100);

    outtextxy (2, 105, "Line");
    rectangle (0, 105, 30, 120);

    outtextxy (2, 130, "COLORS");

    setfillstyle (1, BLUE);
    bar (2, 150, 20, 160); 

    setfillstyle (1, RED);
    bar (25, 150, 43, 160);

    setfillstyle (1, GREEN);
    bar (2, 170, 20, 180);

    setfillstyle (1, YELLOW);
    bar (25, 170, 43, 180);

    setfillstyle (1, WHITE);

    outtextxy (2, 190, "Undo");
    rectangle (0, 190, 37, 205);

    outtextxy (2, 210, "Exit");
    rectangle (0, 210, 37, 225);


    if (count == 0) {
        outtextxy (400, 300, "Welcome to Paint!");
        delay(2000);
        count++;
        paintInterface ();
    }

}



int main ()
{
    Circle a;
    Rectangle b;
    Ellipse d;
    Triangle c;
    int x1, y1;
    float length;
    paintInterface ();
    int xcoord, ycoord;
    bool flag = true;
    while (flag) {
    while(!ismouseclick(WM_LBUTTONDOWN)) {}
    getmouseclick(WM_LBUTTONDOWN, xcoord, ycoord);

    if (((xcoord >= 0) && (xcoord <= 35)) && ((ycoord >= 5) && (ycoord <= 20))) {
        paintInterface ();
    }
    }

...そして、似たような if 条件がたくさんあります。

私のコンパイラは、b と d、つまりメインの Rectangle オブジェクトと Ellipse オブジェクトの宣言でエラーを出します。エラーは、「';' が必要です」ですが、これは「;」です。属している私を超えて、任意の助けをいただければ幸いです。

4

1 に答える 1