gpt4 book ai didi

c++ - 使用强 typedef 作为 Boost Parameter 库的更轻量级替代方案?

转载 作者:IT老高 更新时间:2023-10-28 22:13:38 25 4
gpt4 key购买 nike

我经常使用 Boost strong typedef 实用程序来 boost 我的程序的安全性。例如通过编写如下代码:

BOOST_STRONG_TYPEDEF(int, X)
BOOST_STRONG_TYPEDEF(int, Y)
BOOST_STRONG_TYPEDEF(int, Width)
BOOST_STRONG_TYPEDEF(int, Height)

struct Rect {
Rect(X x, Y y, Width w, Height h);
};

// Usage:
Rect rect(X(10), Y(20), Width(800), Height(600));

这里的强 typedef boost 了代码的可读性和安全性。 (如果参数以错误的顺序提供,编译器将报告错误,如果参数都是 int,则不会出现这种情况。)

我的问题是:

  • 可以为此目的使用 BOOST_STRONG_TYPEDEF 吗? (文档为 very brief。)
  • 是否有重要的理由更喜欢 boost 参数库?

最佳答案

从技术上讲:

  • 有效
  • 它增加了类型安全性

实际上:

我不建议仅仅为了单个函数的参数而创建新类型(除非它是特定于该函数的枚举),类型应该渗透到应用程序中以避免反复使用强制转换。

如果在整个应用程序中使用了 XYWidthHeight 类型,那么不仅不会有类型转换,但你的应用程序会更安全,记录也更好(是的......我是一个类型怪胎)。

现在,对于 Boost.Parameters,这是完全不同的。

Boost.Parameters 可以(可能)在您已经有类型时添加。老实说,虽然我从来没有看到需要。当你的函数变得如此笨拙以至于需要 Boost.Parameters 来调用它们时,你应该修复函数,而不是添加到困惑中。

关于c++ - 使用强 typedef 作为 Boost Parameter 库的更轻量级替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9211210/

25 4 0