У меня есть два заголовочные файлы, которые я в том числе с моей main.cpp, которые имеют следующее определение в анонимном пространстве имен: const string strToken = ("%");
Компиляция с использованием г ++ версии 4.9 результатов в этом:Ошибка GCC с анонимными пространствами имен?
In file included from main.cpp:25:0:
libraries/trace.h:31:14: error: redefinition of ‘const string {anonymous}::strToken’
const string strToken = ("%");
^
In file included from libraries/debuglogger.h:12:0,
from libraries/packet.h:10,
from main.cpp:20:
libraries/strformat.h:23:14: note: ‘const string {anonymous}::strToken’ previously declared here
const string strToken = ("%");
^
Я думал, что помещение что-то в анонимном пространстве имен ограничивало его область действия, что делало это проблемой. Я что-то упускаю, или это какой-то дефект в GCC? Если кто-то хочет получить полный код, я бы хотел включить его, но я надеюсь, что включил в свой вопрос достаточную информацию, чтобы не нуждаться в этом.
Почему у вас есть анонимное пространство имен в файле заголовка? В каждой копии будет копия «%». –
@NeilKirk Итак, я собираюсь сделать шаг назад. Допустим, я не хочу ограничивать доступ к этой строке моим заголовочным файлом. Как я могу это сделать, не делая его частным членом класса или использующим анонимное пространство имен? – IanM
Я не уверен в ваших сообщениях, если вы хотите скрыть это от включенных файлов или сделать его доступным. –