从嵌套命名空间注入类型:Typedef或使用?
我有一个大型的软件框架,目前生活在一个通用的命名空间。最近,我将一些类移入嵌套的名称空间,但为了暂时保持向后兼容性,我需要将名称保留在全局名称空间中。到目前为止,我使用using
:从嵌套命名空间注入类型:Typedef或使用?
namespace framework { namespace IO {
struct IStream;
}
#if COMPATIBILITY
using IO::IStream;
#endif
}
但是,我同样可以使用typedef IO::IStream IStream;
。使用typedef
而不是using
有什么优势/劣势?
回答:
它们有些不同:typedef引入了一个新类型名称framework::IStream
,而using指令只影响它所在范围内的名称查找。 (这有额外的效果,如果你要也定义一个独立的,真正的类型framework::IStream
,但因为你不这样做,这不是一个问题。)
在这个意义上我会说,using
是一个实现细节,它比通过引入新类型名称而产生的全局语义变化更可取。因此,如果您可以避开它,请在需要的范围内使用using
指令,然后逐渐将这些指令迁移到新系统。
以上是 从嵌套命名空间注入类型:Typedef或使用? 的全部内容, 来源链接: utcz.com/qa/258665.html