Posted by
Luigi Ballabio on
URL: http://quantlib.414.s1.nabble.com/a-simple-question-tp9462p9466.html
On Fri, 2007-05-18 at 15:00 +0200, DU VIGNAUD DE VILLEFORT FRANCOIS
GASAPRD PHI wrote:
> >As for QL_NULL_REAL, it doesn't really matter what value is used as long as >it's a determined one
>
> Since it is now used as some kind of unitialized value by the quotes classes, I would say that it is no longer such an immaterial detail.
Sure. We picked a value which is unlikely to be chosen as a valid one;
but since it has to be a value anyway (we could use NaN, but it's not
very portable) it's not foolproof.
> Maybe you have thought about boost::optional for the same reason. ;-)
> It would be cleaner indeed. However I'm not convinced that it's a good solution yet.
> IMO boost::optional a pefect solution in the case of a free function which can return invalid result even in normal situations. (like the second example of boost optional tutorial).
>
> On the hand it seems to me that using it for a function member would add some spurious trickyness to the class. What do you think of this implementation ?
>
> Quote():isValid_(false){}
>
> virtual void resetQuote() {
> isValid_ = false;
> }
>
> virtual bool isValid() const {
> return isValid_;
> };
> private:
> bool isValid_;
Is this the base class? In this case, isValid_ should be protected and
derived classes would have to manage it. Using optional wouldn't be so
tricky: we could just write SimpleQuote as (without namespace boost)
class SimpleQuote {
private:
optional<Real> value_;
public:
explicit SimpleQuote(optional<Real> value = none)
: value_(value) {}
bool isValid() const {
return value_; // automatic conversion to bool
}
Real value() const {
return *value_; // access the actual Real
}
Real setValue(Real x) {
value_ = x; automatic conversion to optional
... // notify etc.
}
};
SimpleQuote q1; // not initialized, isValid() returns false
SimpleQuote q2(42.0); // double automatically converted to optional
Later,
Luigi
----------------------------------------
The First Rule of Optimization: Don't do it.
The Second Rule of Optimization (For experts only): Don't do it yet.
-- Michael Jackson
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/_______________________________________________
QuantLib-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-dev