a function-definition is not allowed here before '{' token что и как?

#include <iostream>
#include <conio.h>
#include <winbgim.h>
#include <math.h>

#define ESC 27 //escape
#define LEFT 75 //??????? ?????
#define RIGHT 77 //??????? ??????
#define TOP 72 //??????? ?????
#define BOT 80 //??????? ????
#define ROTX 83 //del
#define ROTY 71 //home
#define ROTZ 79 //end
#define RSZP 73 //pgup
#define RSZM 81 //pgdn

struct Dot3d
{
    int x, y, z;
};
Dot3d Cube[8];
int Rebro = 200;
int Rebra[12][2] = {{0, 1}, {1, 2}, {2, 3}, {3, 0}, {4, 5}, {5, 6}, {6, 7}, {7, 4}, {0, 4}, {1, 5}, {2, 6}, {3, 7}};
int AngleX = 0;
int AngleY = 0;
int AngleZ = 0;

void PaintCube(Dot3d*);
void InitCube(int, int, int, int);
void OffsetCubeHorizontal(int);
void OffsetCubeVertical(int);
void OffsetCubeResize(int);

void rotationX(int);
void rotationZ(int);
void rotationY(int);
void ResizePlus(int);
void ResizeMinus(int);


int main(int argc, char** argv)
{
    int Krok = 10;
    int Mx, My;
    initwindow(1200, 1000);
    Mx = getmaxx() / 2;;
    My = getmaxy() / 2;;
    InitCube(200, 200, 0, Rebro);
    PaintCube(Cube);
    int v;

    while (getch() != ESC)
    {
        {
            v = getch();

            if (v == RIGHT)
            {
                OffsetCubeHorizontal(Krok);
            };

            if (v == LEFT)
            {
                OffsetCubeHorizontal(-Krok);
            };

            if (v == BOT)
            {
                OffsetCubeVertical(Krok);
            };

            if (v == TOP)
            {
                OffsetCubeVertical(-Krok);
            };

            if (v == ROTX)
            {
                rotationX(15) ;
            }

            if (v == ROTY)
            {
                rotationY(15) ;
            }

            if (v == ROTZ)
            {
                rotationZ(15) ;
            }

            if (v == RSZM)
            {
                ResizeMinus(5) ;
            }

            if (v == RSZP)
            {
                ResizePlus(5) ;
            }

            std::cout << v;
        }
        cleardevice();
        PaintCube(Cube);
    }

    getch();
    return 0;
}
void InitCube(int x1, int y1, int z1, int m)
{
    Cube[0].x = x1;
    Cube[0].y = y1;
    Cube[0].z = z1;
    Cube[1].x = Cube[0].x + m;
    Cube[1].y = Cube[0].y;
    Cube[1].z = Cube[0].z;
    Cube[2].x = Cube[0].x + m;
    Cube[2].y = Cube[0].y;
    Cube[2].z = Cube[0].z + m;
    Cube[3].x = Cube[0].x;
    Cube[3].y = Cube[0].y;
    Cube[3].z = Cube[0].z + m;
    Cube[4].x = Cube[0].x;
    Cube[4].y = Cube[0].y - m;
    Cube[4].z = Cube[0].z;
    Cube[5].x = Cube[0].x + m;
    Cube[5].y = Cube[0].y - m;
    Cube[5].z = Cube[0].z;
    Cube[6].x = Cube[0].x + m;
    Cube[6].y = Cube[0].y - m;
    Cube[6].z = Cube[0].z + m;
    Cube[7].x = Cube[0].x;
    Cube[7].y = Cube[0].y - m;
    Cube[7].z = Cube[0].z + m;

    for (int i = 1; i < 8; i++)
    {
        Cube[i].x = Cube[0].x + (Cube[i].x - Cube[0].x) * cos(
                        AngleY * 3.14 / 180) - (Cube[i].z -
                                                Cube[0].z) * sin(AngleY * 3.14 / 180);
        Cube[i].z = Cube[0].z + (Cube[i].x - Cube[0].x) * sin(
                        AngleY * 3.14 / 180) + (Cube[i].z -
                                                Cube[0].z) * cos(AngleY * 3.14 / 180);
        Cube[i].y = Cube[0].y + (Cube[i].y - Cube[0].y) * cos(
                        AngleX * 3.14 / 180) - (Cube[i].y -
                                                Cube[0].y) * sin(AngleX * 3.14 / 180);
        Cube[i].z = Cube[0].z + (Cube[i].z - Cube[0].z) * sin(
                        AngleX * 3.14 / 180) + (Cube[i].z -
                                                Cube[0].z) * cos(AngleX * 3.14 / 180);
        Cube[i].x = Cube[0].x + (Cube[i].x - Cube[0].x) * cos(
                        AngleZ * 3.14 / 180) - (Cube[i].y -
                                                Cube[0].y) * sin(AngleZ * 3.14 / 180);
        Cube[i].y = Cube[0].y + (Cube[i].x - Cube[0].x) * sin(
                        AngleZ * 3.14 / 180) + (Cube[i].y -
                                                Cube[0].y) * cos(AngleZ * 3.14 / 180);
    }

    for (int i = 1; i < 8; i++)
    {
    }

    for (int i = 1; i < 8; i++)
    {
    }
}
void PaintCube(Dot3d* c)
{
    int yt1, yt2, xt1, xt2;
    double koefZX = sin(AngleX * 3.14 / 180);
    double koefZY = cos(AngleY * 3.14 / 180);
    koefZX = 0.3;
    koefZY = 0.2;

    for (int i = 0; i < 12; i++)
    {
        xt1 = c[Rebra[i][0]].x - c[Rebra[i][0]].z * koefZX;
        yt1 = c[Rebra[i][0]].y - c[Rebra[i][0]].z * koefZY;
        xt2 = c[Rebra[i][1]].x - c[Rebra[i][1]].z * koefZX;
        yt2 = c[Rebra[i][1]].y - c[Rebra[i][1]].z * koefZY;
        setcolor(i + 2);
        line(xt1, yt1, xt2, yt2);
    }
}
void OffsetCubeHorizontal(int ofs)
{
    for (int i = 0; i < 8; i++)
    {
        Cube[i].x = Cube[i].x + ofs;
    }
}
void OffsetCubeVertical(int ofs)
{
    for (int i = 0; i < 8; i++)
    {
        Cube[i].y = Cube[i].y + ofs;
    }
}
void OffsetCubeResize(int r)
{
    Rebro = Rebro + r;
}
void rotationX(int a)
{
    AngleX = AngleX + a;
    InitCube(Cube[0].x, Cube[0].y, Cube[0].y, Rebro);
}
void rotationY(int a)
{
    AngleY = AngleY + a;
    InitCube(Cube[0].x, Cube[0].y, Cube[0].y, Rebro);
}
void rotationZ(int a)
{
    AngleZ = AngleZ + a;
    InitCube(Cube[0].x, Cube[0].y, Cube[0].y, Rebro);
}
void ResizePlus(int r)
{
    Rebro = Rebro + r;
    InitCube(Cube[0].x, Cube[0].y, Cube[0].y, Rebro);
}
void ResizeMinus(int r)
{
    Rebro = abs(Rebro - r);
    InitCube(Cube[0].x, Cube[0].y, Cube[0].y, Rebro);
    int main()
    {
        menu();
    }
    int menu()
    {
        setlocale(LC_ALL, "Ukrainian");
        cout << "   ГЕОМЕТРИЧНI ПЕРЕТВОРЕННЯ Будинка\n"
             << endl;
        cout << ">|Виберiть один iз пунктiв меню|<\n" <<
             endl;
        cout << "1. Демонстрацiя фiгури\n"
             << "2. Рух Будинка\n"
             << "3. Масштаб будинка\n"
             << "4. Обертання Будинка\n"
             << "5. Керування\n"
             << "6. Про автора\n"
             << "7. Вихiд" << endl;
        cout << "|>>> ";
        int v;
        int variant;

        while (true)
        {
            cin >> variant;

            switch (variant)
            {
                case 1:
                    cout << "Демонстрацiя фiгури" << endl;
                    Cube_demostration();
                    system("pause");
                    main();

                case 2:
                    cout << "Рух будинка" << endl;
                    Cube_movement();
                    system("pause");
                    main();

                case 3:
                    cout << "Масштаб будинка" << endl;
                    Cube_Resize();
                    system("pause");
                    main();

                case 4:
                    cout << "Обертання Будинка" << endl;
                    Cube_rotation();
                    system("pause");
                    main();

                case 5:
                    cout << "Довiдка:" << endl;
                    cout << "Left Arrow(2) - перемiщення будинка в лiву сторону\n"
                         << "Right Arrow(2) - перемiщення будинка в праву сторону\n"
                         << "Up Arrow(2) - перемiщення будинка вверх\n"
                         << "Down Arrow(2) - перемiщення будинка вниз\n"
                         << "KP_PLUS(3) - збiльшення масштабу\n"
                         << "KP_MINUS(3) - зменшення масштабу\n"
                         << "Eng D(4) - Обертання по осi X\n"
                         << "Eng S(4) - Обертання по осi Y\n"
                         << "Eng A(4) - Обертання по осi Z\n";
                    system("pause");
                    main();

                case 6:
                    cout << "Про автора:" << endl;
                    cout << "Черничка Богдан , студент групи КН-23, над данною роботою скорбив стаждав но всетаки написав ..../n"
                         << "  Природничо-гуманiтарного коледжу ДВНЗ \"УжНУ\" "
                         << endl;
                    system("pause");
                    main();

                case 7:
                    cout << "Вихiд" << endl;
                    exit(EXIT_SUCCESS);
                    break;
                    main();

                default:
                    cerr << "Ви обрали не правильний варiант" <<
                         endl;
                    exit(EXIT_FAILURE);
                    system("pause");
                    main();
            }

            return 0;
        }

Здравствуйте , буду короток у меня есть простой код на C++ но так как я начинающий всех аспектов и тонкостей не знаю , так вот в чем дело у меня в ниже приложенном коде возникает ошибка [Error] a function-definition is not allowed here before '{' token а также вместе с ней возникает [Error] expected '}' at end of input прошу помочь в решении данной проблемы спасибо ВОТ МОЙ КОД


Ответы (1 шт):

Автор решения: 0x25

Вы определяете функцию main() внутри другой функции. Вынесите её определение в глобальный scope. И вызывать её из других функций нельзя, т.к. это точка входа в программу.

→ Ссылка