Название: Проблема с глобальной перемнной Отправлено: MuLLIKA от Октябрь 22, 2010, 02:12 Есть заголовочный файл в котором описанны, все структуры и множества. Туда я записал переменную int StrokIndexArrayCollids.
Этот заголовочный файл подключен ко всем классом проекта, после добавления в этот файл переменной int StrokIndexArrayCollids компилятор выдает мне ошибку: multiple definition of `StrokIndexArrayCollids' попробовал сделать extern int StrokIndexArrayCollids; пишет: undefined reference to `StrokIndexArrayCollids' во всех местах обращения любых классов Зарание спасибо! Название: Re: Проблема с глобальной перемнной Отправлено: Alex Custov от Октябрь 22, 2010, 04:04 Чтобы не иметь таких проблем, сперва нужно изучить язык, и только потом пользоваться тулкитами. Я уверен, что в твоём случае можно обойтись и без глобальных переменных. Покажи, что хочешь сделать.
Название: Re: Проблема с глобальной перемнной Отправлено: SASA от Октябрь 22, 2010, 09:20 Прочитайте что-нибудь про то, как компилируются программы на C++.
Название: Re: Проблема с глобальной перемнной Отправлено: merke от Октябрь 22, 2010, 10:12 Вот смотри, получается у тебя есть заголовочный файл в котором описана переменная StrokIndexArrayCollids теперь когда ты подключаешь этот заголовочный файл в какому либо классу инклудом, класс имеет возможность обращаться к данной переменной. И когда ты ещё один раз объявляешь эту переменную в твоем классе он тебе и выдает ошибку двойного декларирования одной и той же переменной - StrokIndexArrayCollids.
Решение: учить азы C++ Название: Re: Проблема с глобальной перемнной Отправлено: gogi от Октябрь 22, 2010, 10:18 попробовал сделать extern int StrokIndexArrayCollids; Сделай для заголовочного файла .cpp-модуль и объяви там наконец переменную:пишет: undefined reference to `StrokIndexArrayCollids' во всех местах обращения любых классов int StrokIndexArrayCollids; extern int StrokIndexArrayCollids; - это указание, что её можно использовать в других модулях. То есть это указание у тебя есть, а самой переменной нет. Отсюда и ошибка линковки. Название: Re: Проблема с глобальной перемнной Отправлено: MuLLIKA от Октябрь 22, 2010, 13:18 Цитировать Вот смотри, получается у тебя есть заголовочный файл в котором описана переменная StrokIndexArrayCollids теперь когда ты подключаешь этот заголовочный файл в какому либо классу инклудом, класс имеет возможность обращаться к данной переменной. И когда ты ещё один раз объявляешь эту переменную в твоем классе он тебе и выдает ошибку двойного декларирования одной и той же переменной - StrokIndexArrayCollids. #ifndef STRUCTHEADER_H #define STRUCTHEADER_H extern int StrokIndexArrayCollids; #endif // STRUCTHEADER_H ни в одном классе я его не объявляю (int StrokIndexArrayCollids), а лишь присваиваю ему значение StrokIndexArrayCollids = 0 по ходу программы. все, что я делаю Название: Re: Проблема с глобальной перемнной Отправлено: MuLLIKA от Октябрь 22, 2010, 14:38 Всем огромное спасибо! решено!
На с++ ни когда не кодил, всю жизнь писал на чистом Си, таких нюансов не приходилось затрагивтаь Название: Re: Проблема с глобальной перемнной Отправлено: Alex_cs_gsp от Октябрь 23, 2010, 09:07 Всем огромное спасибо! решено! На с++ ни когда не кодил, всю жизнь писал на чистом Си, таких нюансов не приходилось затрагивтаь Вообще-то на чистом Си такие же самые нюансы. |