C ++命名空间问题

时间:2012-06-27 13:46:59

标签: c++ namespaces

我有三个类,所有这些类都来自不同的命名空间,如下所示:

classA.h

namespace outer
{
    namespace inner
    {
        class ClassA
        {
           ....
        };
    }
}

classB.h

namespace inner
{
    class ClassB
    {
        ...
    };
}

classC.h

#include <classB.h>

namespace outer
{
    namespace inner2
    {
        using inner::ClassB; // error here, says outer::inner2::ClassB has not been declared.

        class ClassC
        {
            ....
        };
     }
}

我被困在这,请帮我解决这个问题。

1 个答案:

答案 0 :(得分:9)

你需要

using ::inner::ClassB;

因为在namespace outer中,inner

有2个选项
  • ::inner - 全局命名空间
  • ::outer::inner - outer名称空间

默认情况下,using inner::ClassB;会尝试从ClassB导入outer::inner