![]() |
|
Модераторы: bsa |
![]()
|
|
| Gershkovich |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 8.2.2006 Репутация: нет Всего: 2 |
Помогите разобраться!
Есть две глобальные статич. переменные (объявленные в файле globals.h):
Есть класс. У него есть метод init(), который заполняет массив
Этот метод дергается из метода главного окна вот так:
Массив инициализируется единицами в методе init(); но когда я читаю значения в методе keyPressEvent - все значения в массиве нулевые !!! Я считал, что раз массив статический, то он существует в единственном экземпляре в приложении. Тем более инициализация и чтение static int idx = 0 объявленное в том же файле, проходит нормально. Где грабли и как их побороть ?? Заранее спасибо. Это сообщение отредактировал(а) Gershkovich - 23.3.2009, 12:38 |
||||||
|
|||||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Определять в H файле статические переменные не стоит
В H файле пользуйтесь extern, а само определение вынесите в cpp файл. |
|||
|
||||
| Albor |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 589 Регистрация: 28.2.2009 Репутация: 2 Всего: 9 |
massif и massiff не в этом ли дело? подозреваю что в программе присутствует и то и другое, иначе компилятор указал бы.
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 29 Всего: 69 |
Albor, ну ты даёшь! как такое вообще можно было заметить? +1
|
|||
|
||||
| Gershkovich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 8.2.2006 Репутация: нет Всего: 2 |
Albor, просто опичатко. в тексте приложения асе в порядке
Anikmar, спасибо за наводку. Так оно и оказалось. в .h файле пишу : extern int massiff [3][3]; а в .cpp - инициализация. int massiff [3][3] =..... Добавлю еще что переменная не может быть одновременно и static и extern. На самом деле с объявлением статических переменных не все так просто. В том виде, в каком я привел текст программы, действительно объявлялось два экземпляра. Это как-то связано с линковщиком. У меня пока мало знаний на эту тему. Надо изучать. Но открытым остается вопрос почему работает с просто int .... ??? |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
Gershkovich, интересно, а зачем делать глобальную переменную статической?
|
|||
|
||||
| Gershkovich |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 243 Регистрация: 8.2.2006 Репутация: нет Всего: 2 |
mrbrooks, ты прав. Незачем. ТОка щас понял
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
Добавлю еще что переменная не может быть одновременно и static и extern.
Это само собой разумеется |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |