Форум программистов, компьютерный форум CyberForum.ru

Область видимости переменных - C++

Восстановить пароль Регистрация
 
fps
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 5
30.09.2013, 18:18     Область видимости переменных #1
Здравствуйте. Столкнулся со следующей проблемой:
есть файл main.cpp:
C++
1
2
3
4
5
6
7
8
int a, b;
 
#include "class.h"
 
int main()
{
   return 0;
}
так-же class.h:
C++
1
2
3
4
class myClass
{
   void func();
}
и class.cpp:
C++
1
2
3
4
5
6
#include "class.h"
 
void myClass::func()
{
    //...
}
Проблема в том, что я не могу получить доступ в функции myClass::func() доступ к переменной a, объявленной в main.cpp.

Как это правильно сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2013, 18:18     Область видимости переменных
Посмотрите здесь:

Область видимости в С++ C++
Область видимости C++
C++ Область видимости
область видимости переменных C++
Область видимости C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
30.09.2013, 18:22     Область видимости переменных #2
Правильно этого не делать. Но если очень хочется, объявите эту переменную в class.cpp как extern.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
30.09.2013, 18:24     Область видимости переменных #3
Цитата Сообщение от fps Посмотреть сообщение
Как это правильно сделать?
вообще правильно бы было передать указатель на них через функцию в класс

C++
1
2
3
4
void myClass::func(int *a)
{
 *a = -1;
}
fps
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 5
30.09.2013, 18:26  [ТС]     Область видимости переменных #4
Хорошо, но как тогда можно сделать какую-нибудь глобальную переменную. Не передавать же каждый раз её в класс вручную?
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
30.09.2013, 18:33     Область видимости переменных #5
Цитата Сообщение от Fyret Посмотреть сообщение
Правильно этого не делать. Но если очень хочется, объявите эту переменную в class.cpp как extern.
C++
1
extern int a;
в файле class.cpp
fps
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 5
30.09.2013, 18:43  [ТС]     Область видимости переменных #6
Спасибо. Работает. Буду пользоваться этим вариантом.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2013, 19:17     Область видимости переменных
Еще ссылки по теме:

C++ Область видимости и время жизни переменных внутри класса
C++ Область видимости
Указатель и область видимости C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
30.09.2013, 19:17     Область видимости переменных #7
Цитата Сообщение от fps Посмотреть сообщение
Хорошо, но как тогда можно сделать какую-нибудь глобальную переменную. Не передавать же каждый раз её в класс вручную?
Если я не ошибаюсь, то правильнее было бы в main.cpp создать дочерний клас, который уже будет знать о существующей глобальной переменной и в то же время унаследует все необходимые методы, более того необходимые методы можно переопределить в дочернем классе.
Yandex
Объявления
30.09.2013, 19:17     Область видимости переменных
Ответ Создать тему
Опции темы

Текущее время: 11:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru