繁体   English   中英

我可以在 C++ 类中声明“使用命名空间”吗?

[英]May I declare “using namespace” inside a C++ class?

假设有一个 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 命名空间指令,但通常被认为是一种糟糕的风格。 可以放入你的类的源文件 (.cpp)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM