我可以在C ++类中声明“using namespace”吗?

时间:2012-02-15 15:31:25

标签: c++ namespaces

假设有一个C ++类。还有一个名称空间,只有在我的班级内才能看到。怎么办?

class SomeClass
{
    using namespace SomeSpace;

public:
    void Method1();
    void Method2();
    void Method3();
};

namespace SomeSpace
{
    /*some code*/
};

2 个答案:

答案 0 :(得分:7)

using namespace X;被称为using directive,它只能出现在命名空间和函数范围内,而不能出现在类范围内。所以你想要做的事情在C ++中是不可能的。您可以做的最好的事情是在该类的命名空间范围内编写using指令,这可能是不可取的。

然而,第二个想法,分析你的话,

  

假设有一个C ++类。并且应该有一个命名空间   仅在我班级内可见。怎么办?

我建议如下,我不确定你想要的是什么。

class A
{
public:
    void Method1();
    void Method2();
    void Method3();

private:

    class B
    {
       //public static functions here, instead of namespace-scope
       // freestanding functions.
       //these functions will be accessible from class A(and its friends, if any) 
       //because B is private to A
    };

};

答案 1 :(得分:0)

不,但你可以这样做:

namespace SomeSpace
{
    /*some code*/
};

using namespace SomeSpace;

class SomeClass
{

public:
    void Method1();
    void Method2();
    void Method3();
};

虽然不建议在头文件中应用using namespace指令,并且通常将其视为错误样式。可以放入类的源文件(.cpp)。