![]() |
|
|
![]()
|
|
| GLOOM |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 28.1.2006 Репутация: нет Всего: нет |
Вопрос такой как,куда добавлять собственные классы в форме чтоб потом ими пользоваться в bcb 6
|
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
Во-первых: добавлять каждый класс нужно в отдельном файле (а лучше в двух)
Во-вторых: Включать созданные файлы директивой #include "Имя файла" Втретьих : Создавать объект нужного тебе класаа. А потом пользуйся сколько хочешь. -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| GLOOM |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 28.1.2006 Репутация: нет Всего: нет |
Сделал файл ".h" с классом
class Planet { public: int a; }; добавил его в Unit.cpp создал экземпляр Planet* P в обработчике кнопки написал P->a = 1; а мне выдают project raised exception class EAccessViolation with message "Access Violation at address 00401cc8 in modul "....exe" . Write of address 00000000. |
|||
|
||||
| BreakPointMAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 6 Всего: 24 |
GLOOM, а как ты "создал экземпляр Planet* P" и где ты это сделал?
-------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
|||
|
||||
| DeadSoul |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: нет Всего: 11 |
GLOOM, ты создал не класс, а указатель на класс -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
| GLOOM |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 28.1.2006 Репутация: нет Всего: нет |
Первое не понял что значит "ты создал не класс" если он у меня объявлен в ".h" и объясните как тогда создавать классы.
Второе у меня проект в нём форма в исходнике формы и создавал экземпляр простым объявлением а при нажатии кнопки на форме, менялось значение "а" у экземпляра класса. третье не понял реплики
|
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
GLOOM, ты все верно сделал, только в конструкторе формы добавь строку
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Как тут объяснишь?
А потом уже работайте с объектом. Если не понятна разница - объясняю: надо убрать звездочку перед именем объекта. Надеюсь, понятно объяснил. |
|||
|
||||
| Artemon |
|
|||
|
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: 7 Всего: 20 |
Если интересно про указатели - то прочитай любую книгу по C
-------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
| mr.Anderson |
|
||||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Artemon, да зачем так париться! Видно же, что человек не разбирается пока в том, что такое указатели и с чем их едят, как и я, впрочем. Так что зачем вообще маяться с указателями? Убрал звездочку и все станет ОК!
Добавлено @ 15:19 Artemon, прочитать мало иногда бывает. Добавлено @ 15:22 GLOOM, чтобы было уж совсем понятно, давайте свой пример приведу. В файле, предположим, myclass.h, пишем следующее:
Усе! Теперь в основном файле программы пишем:
И все будет полный чпок! Понятно теперь? Я постарался максимально просто и понятно сделать. Добавлено @ 15:24 GLOOM, и не забудьте плиз отписаться, поняли аль нет. Если еще вопросы, давайте их сюда. |
||||
|
|||||
| GLOOM |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 28.1.2006 Репутация: нет Всего: нет |
первое я отлично понимаю разницу между объектом и указателем на него , даже более того я отлично понимаю разницу между ссылкой на объект и самим объектом.
Второе
Нааада же , а я то уже подумал что я создаю
Кстати кто-нибудь объяснит мне что такое указатель на класс? sim7 хорошо оказывается разбираешся в указателях сможешь сам найти ошибку в своём коде без помощи debuger'a artemon А почему нельзя просто написать Planet* P; а нужно так Planet* P = new Planet; |
||||
|
|||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 3 Всего: 128 |
Пропустили эти слова, да? А я ж написал их, и они ясно говорят, что я тоже в указателях не разбираюсь. Ладно. Хотел помочь, а получилось наоборот. Отлично... |
|||
|
||||
| BreakPointMAN |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 6 Всего: 24 |
Потому что указатель - это переменная, в которой хранится адрес объекта, когда ты пишешь:
то ты создаешь указатель P, в котором может хранится адрес объекта класса Planet. Но сейчас указтель P никуда не указывает, в нем находится мусор. С помощью new ты создаешь новый объект класса Planet, операция new возвращает его адрес, и этим адресом инициализируется указатель P:
То есть теперь существует и объект, и указатель на него. Поэтому ты можешь обращаться к нему в дальнейшем с помощью "->". Это сообщение отредактировал(а) BreakPointMAN - 29.1.2006, 17:50 -------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
||||||
|
|||||||
| GLOOM |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 28.1.2006 Репутация: нет Всего: нет |
Ладно не парься sim7 меня чёто занесло
Если бы я совершенно не разбирался в указателях меня вот это поставило в тупик: указатель на класс кстати MyClass MyObject1; MyObject1->MyFunc(); "звездочку" и всётаки почему нельзя просто написать Planet* P; а нужно так Planet* P = new Planet; и не надо разъяснять что оператор new выделяет бла-бла-бла а почему bcb ругается |
|||
|
||||
| BreakPointMAN |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 6 Всего: 24 |
Боюсь, что не понимаешь... судя по вопросам в данном топике... а BCB ругается потому, что не знает, к какому объекту обращаться... этого объекта просто нет, если ты пишешь:
поскольку в P лежит мусор -------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
||||
|
|||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |