gpt4 book ai didi

C++ 我应该完全限定我的变量类型吗?

转载 作者:太空狗 更新时间:2023-10-29 20:15:33 24 4
gpt4 key购买 nike

我正在尝试编写最多 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) 或 int f(attributes::Baz* b);
  • c) 或 int f(loggingapi::attributes::Baz* b);
  • d) 或 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

不要忘记别名可以为您做什么...

关于C++ 我应该完全限定我的变量类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12740795/

24 4 0
文章推荐: c++ - 为什么 X(X&) 可以调用两次?
文章推荐: c# - 要列出的数据表