внешняя локальная переменная для глобальной переменной внутри пространства имен

Следующий код работает правильно:

file1.cpp

//global variable
int g_myvar1 = 5;

file2.cpp

int myfunc()
{
extern int g_myvar1;
g_myvar1++
}

Как я могу сделать file2.cpp, если file1.cpp выглядит следующим образом:

file1.cpp

namespace myns
{
//global variable
int g_myvar1 = 5;
}

ПРИМЕЧАНИЕ 1, следующее дает ошибку компиляции в GCC 4.7 «неверное использование квалифицированного имени». Я попытался «использовать пространство имен», но безуспешно.

int myfunc()
{
extern int myns::g_myvar1;
g_myvar1++
}

ПРИМЕЧАНИЕ 2. Следующее работает, но я ищу только определение локальной переменной.

namespace myns
{
//global variable
extern int g_myvar1;
}
int myfunc()
{
myns::g_myvar1++
}

6

Решение

использование using:

void f()
{
using myns::g_myvar1;

++g_myvar1;
}

Вы имеете объявлять переменные (с extern ключевое слово) в .h файл в пространстве имен myns, а также определять их в .cpp файл. И включите заголовочный файл везде, где вы хотите использовать переменные.

4

Другие решения

Поместите пространство имен с extern объявление в заголовочном файле, и включите этот заголовочный файл во все исходные файлы, нуждающиеся в этой переменной.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector