я это следующий сценарийКак решить эту проблему с пространством имен?
namespace A {
//...
class A {
public:
static void foo();
}
//...
} //namespace A
При попытке получить доступ к Foo() из другого класса с A :: Foo() компилятор жалуется на «Foo не является членом», и когда я пытаюсь используйте A :: A :: foo(), он жалуется на неразрешенный внешний.
Как я могу это решить? Я думаю, что создание класса внутри одного и того же пространства имен довольно глупо и приводит к путанице, но я не автор кода, а изменение пространства имен или названия класса вызовет слишком много проблем.
Возможный дубликат [Классы и пространства имен, имеющие одно и то же имя в C++] (http://stackoverflow.com/questions/4070915/classes-and-namespaces-sharing-the-same-name-in-c). –
Ошибка в неразрешенном внешнем значении, что вы не реализовали 'A :: A :: foo()', а не синтаксис, неверно - на самом деле компилятор нашел то, что вы хотели! Вы реализовали, скомпилировали и связали в реализации 'foo'? – templatetypedef
Ниже приведен пример использования 'A :: A :: foo()' с реализацией 'foo' в кодедексе: http://codepad.org/3muVCfgM –