Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глобальные переменные 
V
    Опции темы
Вася К.
Дата 27.4.2011, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 9.2.2005

Репутация: нет
Всего: нет



Добрый день!
У меня есть 
a.h
Код

#ifndef _DATA_
#define _DATA_

static int a = 1;
void inc_a();
int ret_a();

#endif


a.cpp
Код

#include "a.h"
void inc_a()
{
a++;
}

int ret_a()
{
return a;
}


main.cpp
Код

#include "a.h"
int main (int argc, char **argv)
{
cout << a;
inc_a(); // a++ :)
cout << a; //значение не изменилось
cout << ret_a(); //Тут то что надо
}


Т. е. у меня объявлена глобальная статическая переменная а, я хочу иметь к ней доступ отовсюду, где включен файл a.h. Вызов функции inc_a() меняет значение переменной а, но только в области видимости файла, где она объявлена. В других местах, откуда я ссылаюсь на нее, остается начальное значение. Истинное /нужное smile/ значение же мне возвращает функция ret_a();. Задним умом я догадываюсь, что так и должно быть, но может есть другие варианты, например как в делфи,  если где объявлена глобальная переменная, то получить ее значение можно было бы обращаясь непосредсвенно  к ней.



Это сообщение отредактировал(а) Вася К. - 27.4.2011, 09:02
--------------------
Да здраствует ОПТИМИЗМ!
PM MAIL YIM   Вверх
mes
Дата 27.4.2011, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



почитайте, чем static отличается от extern.. 


--------------------
PM MAIL WWW   Вверх
xvr
Дата 27.4.2011, 10:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Вася К. @  27.4.2011,  09:00 Найти цитируемый пост)
Т. е. у меня объявлена глобальная статическая переменная а, я хочу иметь к ней доступ отовсюду, где включен файл a.h.

Хочу яблоко со вкусом лимона, красное, но зеленого цвета. Обычное такое квадратное яблоко  smile 
Вы уж определитесь - статическая переменная вам нужна, или глобальная.  smile 

PM MAIL   Вверх
Вася К.
Дата 28.4.2011, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 9.2.2005

Репутация: нет
Всего: нет



Цитата(mes @  27.4.2011,  09:25 Найти цитируемый пост)
почитайте, чем static отличается от extern..  

читал, но в правильное место вставил с третьего раза  smile  переменную объявлял в хидере а в остальные места пытался запихнуть экстерном, оказалось, надо вообще делать иначе,
в .cpp объявляем переменную глобально, в хидер пихаемс экстерн, и ссылаемся на нее откуда угодно и как угодно без всяких duplicate definition smile 


Цитата(xvr @  27.4.2011,  10:01 Найти цитируемый пост)
Хочу яблоко со вкусом лимона, красное, но зеленого цвета. Обычное такое квадратное яблоко  

клевая вещь , заценил  smile 
--------------------
Да здраствует ОПТИМИЗМ!
PM MAIL YIM   Вверх
mes
Дата 28.4.2011, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(Вася К. @  28.4.2011,  08:48 Найти цитируемый пост)
 оказалось, надо вообще делать иначе,

тогда думаю, не помешало бы еще раз внимательно перечитать главу о объявлении и определении переменных smile



--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0790 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.