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

May I declare "using namespace" inside a C++ class?

本文关键字:using namespace 声明 C++ 我可以      更新时间:2023-10-16

假设有一个C++类。还有一个命名空间,它应该只在我的类中可见。该怎么办?

class SomeClass
{
    using namespace SomeSpace;
public:
    void Method1();
    void Method2();
    void Method3();
};
namespace SomeSpace
{
    /*some code*/
};

using namespace X;被称为using指令,它只能出现在命名空间和函数范围中,而不能出现在类范围中。因此,您想要做的事情在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
    };
};

没有,但你可以这样做:

namespace SomeSpace
{
    /*some code*/
};
using namespace SomeSpace;
class SomeClass
{
public:
    void Method1();
    void Method2();
    void Method3();
};

尽管也不建议在头文件中应用using namespace指令,并且通常被认为是一种糟糕的样式。可以将其放入类的源文件(.cpp)中。