【发布时间】:2012-02-09 12:55:05
【问题描述】:
我经常使用 Boost strong typedef 实用程序来提高我的程序的安全性。例如通过编写如下代码:
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 提高了代码的可读性和安全性。 (如果参数以错误的顺序提供,编译器会报错,如果参数都是int,则不会出现这种情况。)
我的问题是:
- 可以为此目的使用 BOOST_STRONG_TYPEDEF 吗? (文档是very brief。)
- 是否有重要的理由更喜欢 boost 参数库?
【问题讨论】:
-
取决于你所说的'ok'的意思,我假设它编译并运行,所以有什么问题。我看到了你背后的逻辑,但对我来说这似乎是“错误的”。你可以命名变量和参数是有原因的,所以有一些人在那里明确地将
int转换为Width只是为了传递它来设置参数width似乎是错误的。虽然使用set(width w);等可能很方便,但只有int你不能这样做。 -
boost 参数用于命名(甚至是可选)参数,而 BOOST_STRONG_TYPEDEF 将创建一个新类型“名称”,该类型可替代原始类型但仍具有不同类型 .
标签: c++ boost boost-parameter