1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 20
|
||||||||||||||||
1 | ||||||||||||||||
Не определен базовый класс09.09.2012, 01:13. Показов 17658. Ответов 19
Метки нет (Все метки)
Доброго времени суток.
Столкнулся с проблемой при наследовании, и не могу разобраться, как решить. Есть базовый класс SPoint и два производных Tug, Terminal. Хедеры
При компиляции выдает ошибку:
0
|
09.09.2012, 01:13 | |
Ответы с готовыми решениями:
19
Не определен базовый класс Не определен базовый класс Не определен базовый класс Не определен базовый класс |
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|
09.09.2012, 01:17 | 2 |
class SPoint abstract
а если убрать слово abstract, то ошибки остаются?
0
|
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 20
|
|
09.09.2012, 01:18 [ТС] | 3 |
0
|
2276 / 1767 / 741
Регистрация: 27.07.2012
Сообщений: 5,250
|
|
09.09.2012, 01:19 | 4 |
Не на слово abstract ли ругается? Откуда и зачем оно тут?
Добавлено через 31 секунду
0
|
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 20
|
|
09.09.2012, 01:24 [ТС] | 5 |
0
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|
09.09.2012, 01:31 | 6 |
Реализация у базового класса есть? покажите срр файл
0
|
2276 / 1767 / 741
Регистрация: 27.07.2012
Сообщений: 5,250
|
|
09.09.2012, 01:33 | 7 |
Это понятно. Но это слово не из стандарта.
Кидайте весь проект, иначе ничего не понятно.
0
|
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 20
|
||||||
09.09.2012, 01:35 [ТС] | 8 | |||||
Есть.
0
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|
09.09.2012, 01:35 | 9 |
0
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
09.09.2012, 01:37 | 10 |
Бред, уберите слово abstract. Абстрактный класс, это класс который содержит хотя бы одну чисто виртуальную функцию, у Вас она есть:
0
|
2276 / 1767 / 741
Регистрация: 27.07.2012
Сообщений: 5,250
|
|
09.09.2012, 01:42 | 11 |
НЕ поверите - пытаюсь повторить вашу ошибку у себя. Без танкера, порта, а самое главное int main(void) ничего у меня не получится.
0
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|
09.09.2012, 01:53 | 12 |
Ошибка-то не моя, но я тоже не могу ее воспроизвести в liveworkspace. Надо бы в студии пробовать, но нет возможности
0
|
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 20
|
|||||||||||
09.09.2012, 01:57 [ТС] | 13 | ||||||||||
Весь проект еще не готов. Просто по мере реализации отдельных классов - компилю, чтобы ошибки найти. Вот реализация производных классов:
Кликните здесь для просмотра всего текста
0
|
09.09.2012, 01:59 | 14 | |||||||||||||||
а что это такое? зачем эти инклуды? ты сам себя за волосы пытался поднять? и здесь тоже не получится.
если классы содержат указатели друг на друга - инклуды вводят компилятор в ступор: например, ClassA.h:
1
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|
09.09.2012, 02:05 | 15 |
novi4ok, там же вроде бы не ясно, есть ли перекрестные ссылки или нет. Как вы это поняли?
0
|
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 20
|
|
09.09.2012, 02:11 [ТС] | 16 |
При удалении инклудов, появляется ошибка "использование неопределенного типа". Да и #pragma once, насколько я понимаю, следит за тем, чтобы хедер подключался один раз?
0
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
||||||
09.09.2012, 02:49 | 17 | |||||
А ведь novi4ok был скорее всего прав - полистал другие форумы - у людей аналогичная ошибка вылезала при некорректном include.
Надо поискать все файлы, которые подключают заголовочные файлы наследников. В вашем случае, надо искать те файлы, которые инклудят в себя terminal.h или tug.h. Скорее всего один из таких файлов косвенно или напрямую инклудится в базовый класс. Также с помощью
1
|
2276 / 1767 / 741
Регистрация: 27.07.2012
Сообщений: 5,250
|
|
09.09.2012, 02:57 | 18 |
Без всех файлов проекта (ну или хотя бы тех, что тут в коде не к ночи были упомянуты) ничего не собрать и не понять. Ясно одно - что-то где-то не определено.
1
|
1 / 1 / 0
Регистрация: 21.11.2010
Сообщений: 20
|
|
09.09.2012, 04:29 [ТС] | 19 |
Спасибо, разобрался. Все-таки из-за перекрестных инклудов была ошибка. А где можно подробнее почитать о предварительном объявлении? Ну и проектировании, чтобы в будущем этого избежать. В Буче как-то на этот счет ничего не нашел...
0
|
87 / 87 / 1
Регистрация: 19.06.2012
Сообщений: 245
|
|
09.09.2012, 10:22 | 20 |
Я думаю у тебя #pragma once не работал. Юзай include guard - так портабельнее и стандартнее
0
|
09.09.2012, 10:22 | |
09.09.2012, 10:22 | |
Помогаю со студенческими работами здесь
20
Не определён базовый класс error C2504: CMove: не определен базовый класс Ошибка наследования error C2504: exception: не определен базовый класс Ошибка компиляции - "класс" : базовый класс не определен Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |