其他分享
首页 > 其他分享> > C我应该完全限定我的变量类型吗?

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