Ich bin ein ähnliches Problem wie this question, jedoch mit einer zusätzlichen Tiefe:Bezug auf einen Cousin Namespace
namespace root { namespace parent1 { namespace childa {
class hard_to_get_at{};
}}}
namespace root { namespace parent2 { namespace childb {
// how do I refer refer to namespace childb relative to the current namespace ?
void someFunc()
{
parent1::childa::hard_to_get_at instance; // does not work
}
}}}
als ich versuchte, die oben, erhalte ich einen Fehler
Fehler: ‚root: : parent2 :: childb :: parent1 :: childa 'wurde nicht deklariert
ich verstehe nicht, warum das nicht funktioniert, ich habe den Eindruck, dass es sollte. Ich möchte wirklich keine Verwendungsdeklaration innerhalb der someFunc
Funktion setzen müssen.
dies in g geschieht ++ 4.5 mit C++ 0x-Option aktiviert
Vermutlich fehlt Ihnen in Ihrem Code ein Include oder viele wichtige Details in der Frage. Wenn die Includes korrekt sind, haben Sie möglicherweise mehrere Namespaces/Klassen mit demselben Namen, und der Compiler wählt die falsche aus. [Check this] (http://ideone.com/bsy8q) –
Ihr posted code kompiliert für mich gut. –