假設我們需要一個返回值的函數。但是那東西可能找不到。我看到的選項:使用boost :: tuple <bool, T>來表示T是否被找到是否好?
1. T find(bool &ok); //return default T value if not found
我們可以做一個結構:
template <typename T>
class CheckableValue
{
public:
CheckableValue(),
_hasValue(false)
{
}
CheckableValue(const T &t):
_value(t),
_hasValue(true)
{
}
inline bool hasValue() const {return _hasValue}
const T &value() const
{
assert(hasValue());
return _value;
}
private:
T _value;
bool _hasValue;
};
,使功能:
2. CheckableValue<T> find();
或者我們可以使用:
3.boost::tuple<bool, T> find()
怎麼辦你認爲是可取的?
boost可選http://www.boost.org/doc/libs/1_41_0/libs/optional/doc/html/index.html真的很棒。我在許多看起來像海報的地方使用它。 – 2012-03-16 09:47:21