Следующий тестовый код С++ не связан (gcc 4.9.2, binutils 2.25). Ошибка In function 'main': undefined reference to 'X::test'
.
01: #include <string>
02: #include <iostream>
03:
04: namespace X
05: {
06: extern std::string test;
07: };
08:
09: using namespace X;
10: std::string test = "Test";
11:
12: int main()
13: {
14: std::cout << X::test << std::endl;
15: }
Из-за строки 09 я ожидал, что строка 10 определит переменную X::test
, объявленную в строке 06. Я считаю, что вместо нее объявлена и определена не связанная с ней переменная test
в глобальном пространстве имен, следовательно, ошибка связывания.
Вопрос: Может кто-нибудь объяснить, почему мое ожидание было неправильным, и что происходит точно?
Не ответ:
- Я могу сделать ссылку на изменение строки 10 на
std::string X::test = "Test";
. - Мне не следует использовать "using namespace" для начала.