![]() |
|
|
![]()
|
|
| Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: 1 Всего: 1 |
Здрасте. Вот я создал в билдере File1.cpp и написал такое:
Помогите плз. Как теперь правильно описать клас в хедере (File1.h)? Или дайте ссылку на пример. Зарание спасибо. |
|||
|
||||
| Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Удобнее всего разнести объявление и реализацию.
Хедер:
Модуль:
|
||||
|
|||||
| Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: 1 Всего: 1 |
Anikmar, я сделал как ты написал,
Не знаю что делать Присоединённый файл ( Кол-во скачиваний: 22 )
error.JPG 18,44 Kb |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
||||
|
||||
| Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: 1 Всего: 1 |
Мне в хедере инициализоровать? Вот так?:
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Нет. Инициализация в объявлении класса запрещена. Инициализировать ее надо в методе, а объявлять в заголовке.
Грубо говоря, заголовок должен содержать только описательную часть класса. А конкретная работа с его полями должна быть в методах. Просто учебные примеры обожают лепить все в объявление класса - тем самым запутывая. Маленькие функции можно размещать прямо в теле класса, но на практике - лучше выносить за пределы. Внести всегда можно, если она получилась в одну строчку. В заголовке класса оставляете TForm* Forma; А в методе уже размещаете строку Forma = new TForm(Application, 1); Не забудьте удалить созданную форму в деструкторе класса либо автоматически из самой формы. |
|||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
Вообще-то форма не затерается ибо, она создается в куче.
Ошибка в другом. Вместо this, передавайте переменную формы. А вообще советую все объявления переменных сделать в самом классе, а не в конструкторе. |
|||
|
||||
| Sergio |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: 1 Всего: 1 |
Народ сделал как Вы сказали:
хедер
File.cpp
Ошибка: [Linker Error] Unresolved external 'PrivateForm::PrivateForm()' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\MODULE\UNIT1.OBJ |
||||
|
|||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Ага - я ступил. Затирается указатель, конечно. Но все равно неправильно
Вы убрали определение функции из описания класса: PrivateForm(); А раньше там же было пустое определение PrivateForm() { }; Так что в основном модуле создайте такой конструктор, либо выкиньте его вообще - все равно ничего не делает. |
|||
|
||||
| Sergio |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: 1 Всего: 1 |
Anikmar, сделал как ты написал:
File1.h
File1.cpp
И потом создаю объект:
Присоединённый файл ( Кол-во скачиваний: 8 )
error.JPG 18,44 Kb |
||||||
|
|||||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Во-первых я не уверен, что выбран правильный конструктор
Forma = new TForm(Application, 1); хотя могу и ошибаться, я не помню что такой вариант делает. Во-вторых, я бы на всякий случай переменную PrivateForm *myform = new PrivateForm("Hello","World"); тоже бы вынес в поля класса - как-то неуютно видеть, как указатель на объект создается и сразу теряется так как он в стеке. В третьих, под отладчиком проходили? На какой конкретно строке вылет? |
|||
|
||||
| Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: 1 Всего: 1 |
Нашёл причину возникновения ошибки
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
А что эта функция делает? Неужто в текстовую константу что-то пишет?
|
|||
|
||||
| Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: 1 Всего: 1 |
Всем спасибо за помощь
|
|||
|
||||
| stuper |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.5.2007 Репутация: нет Всего: нет |
Пожалуйста подскажите как мне правильно оформить объявление класса, его описание в Builder6, присоединить к проекту. Последствия моих усилий такие.
[C++ Error] MWord.cpp(5): E2111 Type 'MWord' may not be defined here [C++ Error] MWord.cpp(5): E2136 Constructor cannot have a return type specification h - файл компилируется без ошибок, cpp- выдает описанные ошибки. Вот файл MWord.h:
Вот файл MWord.cpp:
Не обращайте внимания на относительную бессмысленность этого класса, т.к. я просто пытаюсь увидеть, что это работает. Он еще наполниться содержанием. |
||||
|
|||||
![]()
|
| Правила форума "С++ 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. |