簡體   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