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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
fps
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 5
#1

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

30.09.2013, 18:18. Просмотров 315. Ответов 6
Метки нет (Все метки)

Здравствуйте. Столкнулся со следующей проблемой:
есть файл 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++
Не компилируется программа, пишет, что count не является однозначным... #include <iostream> #include <stdio.h> using namespace std; ...

Область видимости переменных - C++
Как использовать одну переменную в нескольких файлах, если эта переменная задана только в одном. Файлы между собой связаны Добавлено...

Пример автоматических переменных и область их видимости - C++
Здравствуйте, пишу на форуме в первый раз и я только начал изучать программирование C++(по книге Хортона). Книга написана на версию VS...

Область видимости и время жизни переменных внутри класса - C++
Есть класс, определение в файле myclass.h, реализация myclass.cpp Как и где правильно определить глобальную переменную, чтоб ее значение...

Нюансы работы с лямбдами и область видимости переменных: как передать в лямбду переменную, а не её копию? - C++
Очень нужна помощь, не выходит задать глобальную переменную для работы программы, возможно нужно немного изменить код функции: Функция...

Область видимости - C++
У меня возникла проблема с областью видимости. вот у меня два класса class Obj { public: Win *parent;

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Fyret
184 / 170 / 13
Регистрация: 30.07.2013
Сообщений: 359
30.09.2013, 18:22     Область видимости переменных #2
Правильно этого не делать. Но если очень хочется, объявите эту переменную в class.cpp как extern.
Raali
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,054
Завершенные тесты: 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
622 / 326 / 34
Регистрация: 06.07.2013
Сообщений: 1,054
Завершенные тесты: 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++
func { int someVariable; { int someVariable; //можно ли как нибудь получить доступ к переменной...

Область видимости в классах - C++
Почему следующий пример выдает такой результат: Bar::testPrivate Bar::testPublic Я полагал он должен вывести: ...

Область видимости в библиотеках - C++
Есть 2 либы с одинаковыми классами Первая: ----file t1.h ----- #ifndef LOG1_H #define LOG1_H #include <string>

Область видимости переменной - C++
#include <iostream> int main() { int i = 5; for(int i = 0; i < 5; i++) { //здесь } return 0;


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru