Ошибка LNK2001 с переменными внутри пространства имен

У меня есть 2 файла:

  1. tier1.h

  2. tier1.cpp

В tier1.h у меня есть:

//code

namespace variab
{
int x...; float tpl...; //etc
}

namespace universal
{
using namespace variab;
//some functions prototypes
}

В tier1.cpp определены функции. Некоторые функции находятся в замкнутых пространствах имен, таких как: universal :: extG ::. Эти функции используют переменные, найденные в пространстве имен переменной.

В исходный файл, где находится главный файл, включен tier1.h.

Когда я пытаюсь скомпилировать программу, она выдает ошибки, указывающие на переменные, найденные в пространстве имен variab. Ошибка везде одинакова. Вот как это выглядит:

error LNK2001: unresolved external symbol "int * variab::st" (?st@variab@@3PAHA)

В чем проблема?

0

Решение

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

namespace variab
{
extern int x;
extern float tpl;
// etc...
}

Затем в исходном файле вы делаете определение:

namespace variab
{
int x;
float tpl;
// etc...
}
1

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

Других решений пока нет …

По вопросам рекламы [email protected]