0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
|
||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||
После объявления деструктора программа перестает выводить данные на экран17.04.2009, 15:53. Показов 1011. Ответов 9
Метки нет (Все метки)
Помогите, плиз!
Без деструктора программа работает (правда, компилятор возмущается, что их нет). После того, как я его добавляю, данные на экран больше не выводятся файл .hh
0
|
17.04.2009, 15:53 | |
Ответы с готовыми решениями:
9
После пробуждения из спящего режима программа перестает отправлять данные на сервер После выполнения "левого" IBQuery (sql запрос) DBGrid перестаёт выводить таблицу Выводить данные на текстовый экран После вызова рекурсивной функции программа перестаёт работать |
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||||||
17.04.2009, 15:57 | 2 | |||||
Тело деструктора в твоем случае должно быть пустым:
1
|
Технофашист
228 / 216 / 11
Регистрация: 11.03.2009
Сообщений: 887
|
|
17.04.2009, 16:08 | 3 |
Явно объявлять деструктор нужно только для динамически-созданных данных (с помощью new, malloc). Память под статические данные (как в твоём примере) выделяется на этапе компилирования и очищается только после закрытия программы. Максимум ты можешь их занулить.
0
|
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
|
||||||||||||||||
17.04.2009, 16:58 [ТС] | 4 | |||||||||||||||
а теперь вот такая проблема:
добавляю объект класса Etudiant
файл .hh
cannot allocate an object of type Etudiant because the follow virtual function is abstract. Препод хочет, чтобы эта функция была абстрактной и не реализовывалась в классе Etudiant, а реализовывалась в его подклассах (в данном случае класс Eleve). Подскажите, плиз, что я делаю не так?
0
|
Технофашист
228 / 216 / 11
Регистрация: 11.03.2009
Сообщений: 887
|
||||||
17.04.2009, 17:04 | 5 | |||||
0
|
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
|
|
17.04.2009, 17:16 [ТС] | 6 |
а как тогда можно сделать?
Добавлено через 5 минут 4 секунды тоесть в таком случае нужно всегда создавать не объект класса Etudiant а объект его подкласса, где абстрактная функция уже реализована?
0
|
Maniac
|
|||||||||||
17.04.2009, 17:18 | 7 | ||||||||||
эту фун-ю
Вот пример
1
|
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
|
|
17.04.2009, 17:21 [ТС] | 8 |
спасибо, хорошая идея
0
|
Технофашист
228 / 216 / 11
Регистрация: 11.03.2009
Сообщений: 887
|
|
17.04.2009, 17:23 | 9 |
Абстрактные классы предназначенный для представления общих понятий и используются только в качестве БАЗОВЫХ классов.
Чисто виртуальный метод должен быть объявлен в твоём родительском - базовом классе, а не в производных. ПОнимаешь, ты создаёшь базовый класс. В нём должно уместиться всё то, что будет общим у производных классов (т.е. если класс дерево, то основные элементы это лист, ветка, ствол, корени. Эти есть эелементы будут у всех деревьев. А в производных классах ты уже реализуешь дополнительно комуто почки, комуто цветочки, комуто пух. Ну ведь ты же не будешь создавать объект ДЕРЕВО?! есть объект сосна, тополь, берёза, осина, но понятие дерево это не конкретное растение же ведь. парвильно? Так вот этот базовый класс ты и делаешь абстрактным (с чисто виртуальными методами), ибо обхекты его тебе не понадобяться. только потомки
1
|
0 / 0 / 0
Регистрация: 12.04.2009
Сообщений: 47
|
|
17.04.2009, 17:29 [ТС] | 10 |
Спасибо, я уже поняла
Видимо, это и была цель упражнения. Что-то уже как-то слишком вежливо получается, но еще раз спасибо всем за подробные объяснения и потраченное время
0
|
17.04.2009, 17:29 | |
17.04.2009, 17:29 | |
Помогаю со студенческими работами здесь
10
Программа перестает компилироваться после подключения библиотеки <Afx.h> [Selenium] После 5 часов работы программа перестает работать Как выводить на экран и вводить данные типа wchar_t[]? Программа перестает отвечать после сворачивания или перехода на другое окно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |