假设有一个C++类,而且有一个命名空间应该只在我的类内可见。怎么做?
class SomeClass
{
using namespace SomeSpace;
public:
void Method1();
void Method2();
void Method3();
};
namespace SomeSpace
{
/*some code*/
};
假设有一个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)中是可以的。