С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204

не компилируется

16.03.2012, 20:13. Показов 723. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот кусок кода

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
class Game;
 
class View {
 
private:
    static int left;
    static int right;
    static int position_x;
    static int position_y;
    static int *argc;
    static char **argv;
    static int bottom;
    static int top;
    static int windowSize;
 
public:
 
    View() { 
    }
 
    static void create_window() {
 
        glutInit(View::argc, View::argv);
        glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
        glutInitWindowSize(View::windowSize, View::windowSize);
        glutInitWindowPosition(View::position_x, View::position_y);
        glutCreateWindow("Snake");
        glClearColor(0, 0, 0, 1);
 
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        
        glOrtho(View::left, View::right, View::bottom , View::top, 0, 10);
 
        glutDisplayFunc(Game::game);
 
        glutMainLoop();
    
    }
    void draw() {
 
    }
 
    static int const& getLeft() {
        return left;
    }
     
    static int const& getRight()  {
        return right;
    }
 
    static void setArgc(int *ptr) {
        argc = ptr;
    }
    static void setArgv(char **a) {
        argv = a;
    }
};
 
class Game {
 
private:
    View *interface;
    Data *data;
public:
    Game() {
 
        interface = new View();
    }
    void startGame() {
 
        View::create_window();
 
    }
 
    static void game() {
 
        glClear(GL_COLOR_BUFFER_BIT);
        glBegin(GL_LINE_LOOP);
 
 
        glEnd();
 
        glutSwapBuffers();
 
    }
};
только я не пойму почему он не компилируется

c:\users\morg\documents\visual studio 2010\projects\opengl\snake\snake\main.cp p(219): error C2027: использование неопределенного типа "Game"
1> c:\users\morg\documents\visual studio 2010\projects\opengl\snake\snake\main.cp p(157): см. объявление "Game"
1>c:\users\morg\documents\visual studio 2010\projects\opengl\snake\snake\main.cp p(219): error C2065: game: необъявленный идентификатор

обьясните тупому
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.03.2012, 20:13
Ответы с готовыми решениями:

Программа компилируется в Borland 6.0 но не компилируется в Visual Studio 2008
Ета програма компилируетса в борланде 6.0 но не компилируетса в Visualstudio 2008 и в борланде 10-м почему? #include<iostream> ...

Компилируется в С++ bulder 6.0 но не компилируется в VS 2010 express
Здравствуйте. есть небольшая программка которая с успехом компилируется в borland C++ builder 6.0 но не в какую не хочет компилироваться...

В формате .cpp код компилируется, а в .c не компилируется
1).Подскажите почему в формате .cpp код компилируется, а в .c не компилируется 2). Как сделать так, чтобы компилировалось в .c? ...

9
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
16.03.2012, 20:17
C++
1
glutDisplayFunc(Game::game);
тут компилятор не знает, что у классе Game есть что-то под именем game
Попробуй сначала Game определить, потом View
0
3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204
16.03.2012, 20:37  [ТС]
Kastaneda, пробывал, ситуация ровно такая же только наоборот
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
16.03.2012, 20:52
В VS 2008 если перенести класс Game в начало,
то эта ошибка пропадает.
0
3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204
16.03.2012, 20:54  [ТС]
zss2, у меня 2010
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
16.03.2012, 20:56
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
class View;
class Data;
 
class Game {
 
private:
        View *interface;
        Data *data;
public:
        Game();
        void startGame();
 
        static void game() {
 
         
 
        }
};
 
class View {
 
private:
        static int left;
        static int right;
        static int position_x;
        static int position_y;
        static int *argc;
        static char **argv;
        static int bottom;
        static int top;
        static int windowSize;
 
public:
 
        View() {}
 
        static void create_window() {
 
 
                Game::game();
 
        }
        void draw() {
 
        }
 
        static int const& getLeft() {
                return left;
        }
         
        static int const& getRight()  {
                return right;
        }
 
        static void setArgc(int *ptr) {
                argc = ptr;
        }
        static void setArgv(char **a) {
                argv = a;
        }
};
 
void Game::startGame() {
 
                View::create_window();
 
}
Game::Game() {
 
                interface = new View;
}
у меня нет Glut'а, поэтому слегка упростил код. Но суть должна быть понятна.
1
3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204
16.03.2012, 22:46  [ТС]
Kastaneda, Большое вам конешно спасибо, но все же хотелось бы разобратся ) все таки нужно всегда понимать что происходит, я толком не дал дупля
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
16.03.2012, 23:56
Цитата Сообщение от HardMorg Посмотреть сообщение
glutDisplayFunc(Game::game);
в этой точке компилятор ещё ничего не знает о классе Game. поэтому Game::game для него
Цитата Сообщение от HardMorg Посмотреть сообщение
необъявленный идентификатор
0
3 / 26 / 9
Регистрация: 29.08.2010
Сообщений: 204
17.03.2012, 00:39  [ТС]
retmas, Ну это впринцыпе понятно, но я все же обьявил сверху что есть такой класс Game или ему этого мало? и нужно функции реализовывать за пределами класса?
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
17.03.2012, 00:45
Цитата Сообщение от HardMorg Посмотреть сообщение
но я все же обьявил сверху что есть такой класс Game
из этого объявления компилятор не может делать никаких выводов об этом классе, в т.ч. и то что он содержит статическую ф-ю Game::game()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2012, 00:45
Помогаю со студенческими работами здесь

Заголовочный файл, который компилируется в VS2017, не компилируется в Qt
В общем был класс "Матрицы", который нормально работал в VS2017. Возникла необходимость использовать использовать его для создания...

Не компилируется!!!!
Написал прогу которая каждое слово записывает в массив. При вводе текста выбивает объявления, а именно "Инструкция по адресу...

Не компилируется
#include <iostream> #include <conio.h> #include <cstring.h> #include <stdio.h> using namespace std; int main() ...

Не компилируется
В среде MS Visual не хочет компилироваться даже то,что создано мастером автоматически. Снизу скрин. Также еще один глупый вопрос....

Не компилируется
Здравствуйте. Нужна помощь. Не могу понять где ошибка. package FileWork; /** * Created by Владислав on 21.02.2017. */ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru