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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
#1

Не определен базовый класс - C++

12.09.2013, 16:31. Просмотров 558. Ответов 5
Метки нет (Все метки)

В проекте есть два проблемных класса:

C_Button:
C++
1
2
3
4
#include "C_Scenes.h"
class C_Button: protected C_Scenes {
   //...
}
C_Scene:
C++
1
2
3
4
5
#include "C_Button.h"
class C_Scenes {
  protected:
      SDL_Event o_event_1;
};
Выдает ошибку:
error C2504: C_Scenes: не определен базовый класс

Как можно ее исправить, не переделывая полностью архитектуру?
Миниатюры
Не определен базовый класс  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2013, 16:31     Не определен базовый класс
Посмотрите здесь:

C++ абстрактный базовый класс
C++ Не определен базовый класс
Абстрактный базовый класс C++
C++ Можно-ли наследовать класс, в котором определен объект текущего класса?
error C2504: CMove: не определен базовый класс C++
Не определен базовый класс C++
базовый класс строки C++
Неоднозначный базовый класс C++
C++ Как в функции my_function преобразовать ссылку на базовый класс в ссылку на класс B или С
Не определен базовый класс C++
Абстрактный базовый класс C++
C++ Ошибка компиляции - "класс" : базовый класс не определен

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1253 / 1136 / 54
Регистрация: 21.04.2012
Сообщений: 2,359
Завершенные тесты: 3
12.09.2013, 16:33     Не определен базовый класс #2
dimakozyr, зачем #include "C_Button.h" в C_scenes.h?
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,328
12.09.2013, 16:35     Не определен базовый класс #3
У тебя классы через #include ссылаются друг на друга. Возникает коллизия.
А действительно классу
C_Scenes нужно что-то знать про класс C_Button? Насколько обосновано #include "C_Button.h" в файле C_Scene?
dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
12.09.2013, 16:45  [ТС]     Не определен базовый класс #4
Цитата Сообщение от gray_fox Посмотреть сообщение
зачем #include "C_Button.h" в C_scenes.h?
Цитата Сообщение от CheshireCat Посмотреть сообщение
Насколько обосновано #include "C_Button.h" в файле C_Scene?
В C_Scene есть метод buttonEvents(), который используется в C_Button. Этому методу нужен экземпляр o_event_1, определенный в классе C_Scenes. Оба класса находятся в разных файлах.

Может, вынести объявление "SDL_Event o_event_1;" за пределы класса? Тогда можно будет обойтись без наследования, но будет глобальная переменная
gray_fox
What a waste!
1253 / 1136 / 54
Регистрация: 21.04.2012
Сообщений: 2,359
Завершенные тесты: 3
12.09.2013, 16:54     Не определен базовый класс #5
Цитата Сообщение от dimakozyr Посмотреть сообщение
В C_Scene есть метод buttonEvents(), который используется в C_Button. Этому методу нужен экземпляр o_event_1, определенный в классе C_Scenes. Оба класса находятся в разных файлах.
И зачем для этого этот include? Я не понял...

Добавлено через 4 минуты
В любом случае такая "схема" include-ов не взлетит. Можно сделать предварительное объявление C_Button перед определением C_Scenes, вот только зачем?
dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
12.09.2013, 18:36  [ТС]     Не определен базовый класс #6
Цитата Сообщение от gray_fox Посмотреть сообщение
И зачем для этого этот include? Я не понял...
Сорри, метод buttonEvents() определен в классе C_Button, а вызывается он из C_Scenes.
В то-же время в C_Scenes есть экземпляр "SDL_Event o_event_1;", которая нужна в C_Button.

В общем, решил проблему, определив "SDL_Event o_event_1;" еще раз в C_Button, это позволило убрать наследование и инклуды из этого класса
Yandex
Объявления
12.09.2013, 18:36     Не определен базовый класс
Ответ Создать тему
Опции темы

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