我发现我的C++ 头文件很难用所有完全限定类型(比4个嵌套命名空间一样深)读取(并且输入真的很繁琐).这是一个问题(所有答案都提供了实现它的混乱替代方案,但这不是问题):是否有强烈的理由反对在C++语言的结构和类中引入作用域使用指令(尽管允许使用作用域 -功能声明)?
例如
class Foo : public Bar
{
using namespace System;
using namespace System::Network;
using namespace System::Network::Win32::Sockets;
using Bar::MemberFunc; // no conflict with this
// e.g. of how messy my header files are without scoped using-directive
void FooBar(System::Network::Win32::Sockets::Handle handle, System::Network::Win32::Sockets::Error& error /*, more fully-qualified param declarations... */);
};
Run Code Online (Sandbox Code Playgroud)
既然namespace是一个关键字,我会认为它足够明显,不会与使用声明的范围发生冲突,例如Bar::MemberFunc.
编辑:仔细阅读问题--->我加粗了.提醒:我们不是在讨论如何提高示例的可读性.提示using指令范围的中如何实现在C++语言(通过增加关键字/结构等手段IE)是不是一个答案(如果你能找到实现这个使用现有的C++语言标准的一个优雅的方式,那么它会的当然是一个答案)!
有人可以告诉我有什么区别
using namespace android;
....
Run Code Online (Sandbox Code Playgroud)
和
namespace android {
....
}
Run Code Online (Sandbox Code Playgroud)
我发现Android源代码中的几乎所有.cpp文件都使用第二个.cpp文件.
另外,如果我想在我自己的项目中包含一些使用第二种类型的文件,我是否namespace android{...}也需要使用?
因为如果我不这样做,编译器会在调用包含文件的方法时报告错误.或者我需要在方法调用之前添加任何前缀?