![]() |
|
|
![]()
|
|
| Mpak |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 12.11.2006 Репутация: 4 Всего: 7 |
Пишу в Unit1.h файле:
Во второй форме подключаю Unit1.h А он мне пишет Undefined simbol 'nn' -------------------- В любой откомпилированной программе есть, по крайней мере, одна ошибка... P.S. А у меня их минимум две... |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
ясен пень: -- nn член класса. и в общем пространстве имен ты его не найдеш.
выноси String nn; за пределы класса... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Mpak |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 12.11.2006 Репутация: 4 Всего: 7 |
То есть, что-то на подобии:
-------------------- В любой откомпилированной программе есть, по крайней мере, одна ошибка... P.S. А у меня их минимум две... |
|||
|
||||
| Mpak |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 12.11.2006 Репутация: 4 Всего: 7 |
_hunter, Спасибо получилось ;)
уже +3 через 6 постов -------------------- В любой откомпилированной программе есть, по крайней мере, одна ошибка... P.S. А у меня их минимум две... |
|||
|
||||
| Vyacheslav |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
То есть это уже не ООП Mpak, Вы бы приводили строку, которая дает ошибку и имя метода, где раположена эта строка. И все бы решилось просто, типа
Добавлено @ 23:24 И это решит проблему? А не кажется ли Вам, что в результате будем иметь две переменные, вместо одной Под первую память выделится при компиляции первой формы, а под втрорую -соответсвенно при второй. А линкер тихо предупредит о дублированнии переменных Тогда уж надо было объявить хотябы так
-------------------- С уважением, Вячеслав Ермолаев |
||||
|
|||||
| Mpak |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 12.11.2006 Репутация: 4 Всего: 7 |
Vyacheslav, Вы правы, Линкер предупреждал, но я не понял, что он хотел...
Добавлено @ 23:43 Он мне ошибку выдает... -------------------- В любой откомпилированной программе есть, по крайней мере, одна ошибка... P.S. А у меня их минимум две... |
|||
|
||||
| Vyacheslav |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Ну что бы ничегл не менять. объявите как я показал. Хотя это и расширение стандарта но удобно.
По стандарту, если уж так хочется иметь свободную переменную в хидере пишите
и в одном из cpp
Добавлено @ 23:46 Какую? У меня Билдера нет, пишу по памяти. Посмотрите в хелпе, как правильно пользоваться __declspec(selectany). Возможно я напутал с порядком объявлений Добавлено @ 23:50 Нет не напутал В Вашем варианте должно быть
-------------------- С уважением, Вячеслав Ермолаев |
||||||
|
|||||||
| Mpak |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 12.11.2006 Репутация: 4 Всего: 7 |
Vyacheslav, Ура! работает!!! Спасибо большое!
Зато Вы первый кому я повышу репутацию А если не сложно, не могли бы вы мне принцип объяснить (в кратце, конечно) как работает extern и где его еще можно применять? Добавлено @ 23:54 Чем extern отличается от extern __declspec(selectany) и почему на второе мне выдалась ошибка... -------------------- В любой откомпилированной программе есть, по крайней мере, одна ошибка... P.S. А у меня их минимум две... |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Принцип такой - в хидере только объявление переменной, само выделение памяти при объявлении в cpp. Поэтому в хидере extern , то есть мы сообщаем компилятору, что просто объявляем переменную для всеобщего обозрения, в cpp - без уже extern - это уже для инициализации. То есть фактически должны "объявить" переменную дважды. extern __declspec(selectany) как раз позволяет не утруждать себя "двойным" объявлением. Можно объявить один раз в хидере и компилятор все правильно поймет. К тому же здесь же в хидере можно проинициализировать переменную. Почему ошибка? Не знаю. Вы же так и не дали текста сообщения -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Mpak |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 12.11.2006 Репутация: 4 Всего: 7 |
Еще раз спасибо ;)
-------------------- В любой откомпилированной программе есть, по крайней мере, одна ошибка... P.S. А у меня их минимум две... |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
попробовал объявить методом
выдает ошибку: [C++ Error] Kod.h(67): E2092 Storage class 'extern' is not allowed here [C++ Error] Kod.h(67): E2233 Cannot initialize a class member here -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| megabist |
|
|||
![]() Mart Slaaf ![]() ![]() Профиль Группа: Участник Сообщений: 455 Регистрация: 3.4.2006 Где: Мск Репутация: нет Всего: 31 |
дык нет обьявлять то надо как просто экстерном я так помню отсюда.....
-------------------- Don't panic! Жди, и Фатум тебя приведёт... |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Читайте выше. Если объявлять просто екстерном, то потом ее еще раз придеться инициализировать в срр, а этот метод позволяет создать переменную за один раз. -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Так это для глобальных переменных, а Вы его в члены класса оформили. -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
прогнал, извиняюсь.
Объявил вне класса, заработало -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
![]()
|
| Правила форума "С++ 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. |