C我应该完全限定我的变量类型吗?
作者:互联网
我正在尝试编写最多适合80列的代码行.因此,我想知道完全限定我的变量类型是否真的是强制性的?假设以下实现:
//Baz.h
namespace loggingapi {
namespace attributes {
class Baz {};
}} // namespaces
// Bar.h
namespace loggingapi {
namespace attributes {
class Baz; // forward declare Baz.
}
class Biz {
int f(Baz* b);
};
} // namespaces
要声明我的函数参数类型,有多种方法?
> a)int f(Baz * b);
> b)OR int f(attributes :: Baz * b);
> c)OR int f(loggingapi :: attributes :: Baz * b);
> d)OR int f(:: loggingapi :: attributes :: Baz * b);
在上面的列表中,编译器的哪个定义更清晰/含糊不清?
注意:您必须假定在以下实现中不能缩短名称空间/参数/类/函数名称.
解决方法:
变种e?
namespace loggingapi {
namespace attributes {
class Baz; // forward declare Baz.
}
class Biz {
typedef attributes::Baz Baz;
// C++ 11 alternative
// using Baz = attributes::Baz;
int f(Baz* b);
}
} // namespaces
不要忘记别名可以为你做什么……
标签:c98,c,namespaces 来源: https://codeday.me/bug/20190729/1570984.html