Russian Qt Forum
Ноябрь 24, 2024, 03:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с глобальной перемнной  (Прочитано 3588 раз)
MuLLIKA
Гость
« : Октябрь 22, 2010, 02:12 »

Есть заголовочный файл в котором описанны, все структуры и множества. Туда я записал переменную int StrokIndexArrayCollids.
Этот заголовочный файл подключен ко всем классом проекта, после добавления в этот файл переменной int StrokIndexArrayCollids
компилятор выдает мне ошибку: multiple definition of `StrokIndexArrayCollids'

попробовал сделать extern int StrokIndexArrayCollids;
пишет: undefined reference to `StrokIndexArrayCollids'
во всех местах обращения любых классов

Зарание спасибо!
« Последнее редактирование: Октябрь 22, 2010, 02:26 от MuLLIKA » Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Октябрь 22, 2010, 04:04 »

Чтобы не иметь таких проблем, сперва нужно изучить язык, и только потом пользоваться тулкитами. Я уверен, что в твоём случае можно обойтись и без глобальных переменных. Покажи, что хочешь сделать.
Записан
SASA
Гость
« Ответ #2 : Октябрь 22, 2010, 09:20 »

Прочитайте что-нибудь про то, как компилируются программы на C++.
Записан
merke
Гость
« Ответ #3 : Октябрь 22, 2010, 10:12 »

Вот смотри, получается у тебя есть заголовочный файл в котором описана переменная StrokIndexArrayCollids теперь когда ты подключаешь этот заголовочный файл в какому либо классу инклудом, класс имеет возможность обращаться к данной переменной. И когда ты ещё один раз объявляешь эту переменную в твоем классе он тебе и выдает ошибку двойного декларирования одной и той же переменной - StrokIndexArrayCollids.

Решение: учить азы C++
Записан
gogi
Гость
« Ответ #4 : Октябрь 22, 2010, 10:18 »

попробовал сделать extern int StrokIndexArrayCollids;
пишет: undefined reference to `StrokIndexArrayCollids'
во всех местах обращения любых классов
Сделай для заголовочного файла .cpp-модуль и объяви там наконец переменную:
int StrokIndexArrayCollids;

extern int StrokIndexArrayCollids; - это указание, что её можно использовать в других модулях. То есть это указание у тебя есть, а самой переменной нет. Отсюда и ошибка линковки.
Записан
MuLLIKA
Гость
« Ответ #5 : Октябрь 22, 2010, 13:18 »

Цитировать
Вот смотри, получается у тебя есть заголовочный файл в котором описана переменная StrokIndexArrayCollids теперь когда ты подключаешь этот заголовочный файл в какому либо классу инклудом, класс имеет возможность обращаться к данной переменной. И когда ты ещё один раз объявляешь эту переменную в твоем классе он тебе и выдает ошибку двойного декларирования одной и той же переменной - StrokIndexArrayCollids.

#ifndef STRUCTHEADER_H
#define STRUCTHEADER_H

extern int StrokIndexArrayCollids;


#endif // STRUCTHEADER_H

ни в одном классе я его не объявляю (int StrokIndexArrayCollids), а лишь присваиваю ему значение StrokIndexArrayCollids = 0 по ходу программы.
все, что я делаю


Записан
MuLLIKA
Гость
« Ответ #6 : Октябрь 22, 2010, 14:38 »

Всем огромное спасибо! решено!

На с++ ни когда не кодил, всю жизнь писал на чистом Си, таких нюансов не приходилось затрагивтаь
Записан
Alex_cs_gsp
Гость
« Ответ #7 : Октябрь 23, 2010, 09:07 »

Всем огромное спасибо! решено!

На с++ ни когда не кодил, всю жизнь писал на чистом Си, таких нюансов не приходилось затрагивтаь

Вообще-то на чистом Си такие же самые нюансы.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 23.