假设我们需要一个返回内容的函数。但是有可能找不到这个内容。我看到以下几个选项:
我们可以创建一个结构体:
并使函数:
或者我们可以使用:
你认为哪种更好?
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()
你认为哪种更好?