假设有一个C ++类。还有一个名称空间,只有在我的班级内才能看到。怎么办?
class SomeClass
{
using namespace SomeSpace;
public:
void Method1();
void Method2();
void Method3();
};
namespace SomeSpace
{
/*some code*/
};
答案 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)。