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

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

Войти
Регистрация
Восстановить пароль
 
Nikkilla
2 / 2 / 0
Регистрация: 24.02.2013
Сообщений: 62
#1

Глобальная видимость переменной в проекте - C++

08.12.2013, 17:36. Просмотров 533. Ответов 8
Метки нет (Все метки)

Как сделать, чтобы переменная была доступна в любой части проекта?

Делаю так:
Код
// test_me_1.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "test_me_1.h"


int _tmain(int argc, _TCHAR* argv[])
{
	myClass->setUpdate();
	system("pause");
	return 0;
}
Код
// test_me_1.h описывает глобальные переменные
#include "MyClass.h"

static int* my_int = new int(10);
static MyClass* myClass = new MyClass();

static int* getMyInt();

static int* getMyInt()
{
	return my_int;
}
Код
// MyClass.h класс, в котором должны использоваться глобальные переменные.
#include <iostream>

class MyClass
{
public:
	MyClass()
	{

	}

	void setUpdate()
	{
		std::cout << "My int from MyClass.h: " << *getMyInt() << "\n";
	}
};
Дело в том, что при компиляции выдает ошибку:
1>c:\users\admin\documents\visual studio 2010\projects\test_me_1\test_me_1\myclass.h(13): error C3861: getMyInt: идентификатор не найден
В учебнике написано, что для глобальной видимости достаточно написать индефикатор static перед переменной или ф-цие. У меня в .cpp переменные видит, а в файле класса - нет. Как можно решить данную проблему?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 17:36     Глобальная видимость переменной в проекте
Посмотрите здесь:

static и глобальная видимость - C++
прочитал что если писать static int a = 5; то a будет видно ото всюду но оказалосбь это не так... void a(); int main() { ...

Видимость переменной - C++
Доброго времени суток. Нужна небольшая консультация по программе. У меня программа состоит из нескольких методов в каждом из которых...

Видимость переменной - C++
Подскажите пожалуйста, если у меня есть две функции, в которых мне надо использовать одну и ту же константу, правильнее будет сделать её...

Видимость переменной в разных файлах - C++
Добрый вечер) Помоги пожалуйста разобраться) Нужно чтобы переменная len из файла 2 попала (была определена) в файле 1. Компилятор выдает...

Разделение класса со статической переменной в многофайловом проекте - C++
На ровном месте происходят какие-то непонятные чудеса, как будто бы я шаблонный класс объявляю - если реализация класса находится в...

Глобальная переменная - C++
Есть двумерный символьный массив ClusterBuf объявленный глобально. В него,в ходе выполнения программы, будет считываться содержимое...

Глобальная переменная - C++
Никогда с таким не сталкивался... В общем: Надо обьявить глобальный масив в одной функции, но чтобы его видели все другие функции. Вне...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
08.12.2013, 17:44     Глобальная видимость переменной в проекте #2
static ограничивает видимость в единице трансляции
Nikkilla
2 / 2 / 0
Регистрация: 24.02.2013
Сообщений: 62
08.12.2013, 17:46  [ТС]     Глобальная видимость переменной в проекте #3
а как распостранить видимость на весь проект?
lpvoid
322 / 305 / 17
Регистрация: 06.03.2013
Сообщений: 869
08.12.2013, 17:49     Глобальная видимость переменной в проекте #4
Nikkilla, попробуйте в MyClass.h объявить:
C++
1
extern int getMyInt();
и потом вызывать.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.12.2013, 17:49     Глобальная видимость переменной в проекте #5
Цитата Сообщение от Nikkilla Посмотреть сообщение
В учебнике написано, что для глобальной видимости достаточно написать индефикатор static перед переменной или ф-цие.
Хотелось бы увидеть этот учебник... Глобальное объявление - это объявление вне каких-либо функций. Чтобы такую переменую можно было использовать в других файлах, её нужно объявить в этих файлах как extern. Если к глобальному объялению добавить static, то видимость такой переменной ограничена данным файлом.
lpvoid
322 / 305 / 17
Регистрация: 06.03.2013
Сообщений: 869
08.12.2013, 17:50     Глобальная видимость переменной в проекте #6
alsav22,

Не по теме:

простите, вопрос не по теме, но и отдельный топик писать для этого не хочется. что делает оператор разрешения области видимости - :: ?

Alexsandr_S
5 / 5 / 1
Регистрация: 23.10.2013
Сообщений: 18
08.12.2013, 17:51     Глобальная видимость переменной в проекте #7
допиши в MyClass.h #include"test_me_1.h" где ты объявляеш эту переменную
alsav22
08.12.2013, 18:08
  #8

Не по теме:

Цитата Сообщение от lpvoid Посмотреть сообщение
что делает оператор разрешения области видимости - :: ?
Ну, как что? Указывает область (пространство имён, класс) нахождения того, что за ::. Если имени перед :: нет, то глобальное пространство имён.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2013, 18:10     Глобальная видимость переменной в проекте
Еще ссылки по теме:

Глобальная переменная - C++
#include &quot;stdafx.h&quot; #include &quot;locale&quot; #include &quot;iostream&quot; #include &quot;conio.h&quot; using namespace::std; int count = -1; void swap();...

Глобальная переменная - C++
Надо сделать глобальную переменную которая будет видна во всех файлах .cpp Непонятно где ее нужно инициализировать и присваивать...

Глобальная переменная в OpenCL - C++
Всем привет! Кто может подсказать как правильно создать глобальную переменную в OpenCL? unsigned char *globalVariable; __kernel...

Глобальная ф-ция getline - C++
Всем добрый вечер :) Вообщем есть кусок кода: // read for name vector while (std::getline(std::cin, name)) { ...

Глобальная перезагрузка операторов - C++
Есть код: template&lt; class Value &gt; class MyClass { Value value_; }; template&lt; class V &gt;


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

Или воспользуйтесь поиском по форуму:
lpvoid
322 / 305 / 17
Регистрация: 06.03.2013
Сообщений: 869
08.12.2013, 18:10     Глобальная видимость переменной в проекте #9
alsav22, спасибо, интересно было именно если перед ним имени нет. +1 вам.
Yandex
Объявления
08.12.2013, 18:10     Глобальная видимость переменной в проекте
Ответ Создать тему
Опции темы

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