Форум программистов, компьютерный форум CyberForum.ru

Ошибка объявления объекта класса - C++

Восстановить пароль Регистрация
 
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
06.11.2013, 11:24     Ошибка объявления объекта класса #1
Добрый день, есть класс:
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
#ifndef _SDLENTITY_H_
#define _SDLENTITY_H_
 
#include <vector>
#include "SDLAnimation.h"
#include "CSurface.h"
 
class SDLEntity{
public:
    static std::vector<SDLEntity*>    EntityList;
 
protected:
    SDLAnimation    Anim_Control;
 
    SDL_Surface*    Surf_Entity;
 
public:
    float           X;
    float           Y;
 
    int             Width;
    int             Height;
 
    int             AnimState;
 
public:
    SDLEntity();
 
    virtual ~SDLEntity();
 
public:
    virtual bool OnLoad(char* File, int Width, int Height, int MaxFrames);
 
    virtual void OnLoop();
 
    virtual void OnRender(SDL_Renderer* Renderer_Display);
 
    virtual void OnCleanup();
};
#endif
Я пытаюсь объявить объект класса, но у меня выскакивает ошибка "error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "Yoshi_a"
:
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
#ifndef _CAPP_H_
#define _CAPP_H_
 
#include "stdafx.h"
 
class CApp : public CSDLEvent {
private:
    bool    Running;
    SDL_Window* window;
    SDL_Renderer* renderer;
    SDLAnimation Anim_Yoshi;
 
private:
    SDLEntity Yoshi_a;//Тут 
    SDLEntity Yoshi_b;//И тут.
 
 
public:
    CApp();
 
    int OnExecute();
 
public:
    void Reset();
 
    bool OnInit();
 
    void OnEvent(SDL_Event* Event);
 
    void OnLoop();
 
    void OnRender();
 
    void OnCleanup();
 
    void OnExit(); 
 
    void OnKeyDown(SDL_Keycode sym, Uint16 mod, SDL_Scancode scancode);
 
    void OnLButtonDown(int mX, int mY);
};
 
#endif
Подскажите пожалуйста, в чем может быть дело?

Добавлено через 1 час 18 минут
Эта ошибка бывает когда не приинклюден заголовок, но ведь у меня есть этот инклюд, в чем же может быть дело?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2013, 11:24     Ошибка объявления объекта класса
Посмотрите здесь:

C++ Ошибка компиляции (преобразование объекта класса в объект другого класса)
C++ Ошибка инициализации объекта, конструктором класса
Использование объекта одного класса при создании нового класса C++
Как называется и что означает такая форма объявления объекта (конструктор) C++
C++ Друзья, подскажите, говорят, что можно поля класса инициализировать в момент объявления класса. Как это сделать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
06.11.2013, 11:30     Ошибка объявления объекта класса #2
А где сами инклуды-то? я кроме прекомпайл stdafx.h других не вижу
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
06.11.2013, 11:50  [ТС]     Ошибка объявления объекта класса #3
Они там есть, я копируя не доглядел. Вот:
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
#ifndef _CAPP_H_
#define _CAPP_H_
 
#include "stdafx.h"
#include "SDLEntity.h"
 
class CApp : public CSDLEvent {
private:
    bool    Running;
    SDL_Window* window;
    SDL_Renderer* renderer;
    SDLAnimation Anim_Yoshi;
 
private:
    SDLEntity Yoshi_a;
    /*SDLEntity Yoshi_b;*/
 
 
public:
    CApp();
 
    int OnExecute();
 
public:
    void Reset();
 
    bool OnInit();
 
    void OnEvent(SDL_Event* Event);
 
    void OnLoop();
 
    void OnRender();
 
    void OnCleanup();
 
    void OnExit(); 
 
    void OnKeyDown(SDL_Keycode sym, Uint16 mod, SDL_Scancode scancode);
 
    void OnLButtonDown(int mX, int mY);
};
 
#endif
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
06.11.2013, 12:04     Ошибка объявления объекта класса #4
А SDLEntity.h корректно подключается? И тот ли файл подключается? если в файл SDLEntity.h добавить какую-нибудь структуру вида struct foo {}; и попытаться использовать ее внутри capp.h, то получится или нет?
Явных проблем не вижу. Меня только имена классов и дефайнов смущают - не использованы ли они внутри SDL?
Демик
9 / 9 / 0
Регистрация: 19.04.2012
Сообщений: 114
06.11.2013, 12:59  [ТС]     Ошибка объявления объекта класса #5
Да, структуру он тоже не видит. Авто дополнение работает, но во время компиляции выскакивает ошибка.

Добавлено через 5 минут
Разобрался. Я неправильно подключал инклюды, все этот stdafx.h, я еще не до конца понял как он работает.
Yandex
Объявления
06.11.2013, 12:59     Ошибка объявления объекта класса
Ответ Создать тему
Опции темы

Текущее время: 15:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru