On May 6, 2013, at 5:40 AM, "Vicente J. Botet Escriba"
Le 06/05/13 00:21, Rob Stewart a écrit :
The basic idea is reasonable, but I suggest a couple of alternatives. First, I see no value in making is_validated() public. Second, validate() should return void:
void date::validate() { if (!is_valid()) { throw bad_date(); } }
bool date::is_valid() { if (validated()) { return true; } // do validation if (valid) { validated_ = true; } return valid; }
Usage:
date d1; d1.validate(); // throws bad_date date d2(year(2013), may, day(5)); d2.validate(); assert(d2.is_valid()); I thought about this alternative. As is_valid must be const, this request validated_ to be mutable. I wanted to use one of the unused bits to store this information and I don't know if I can declare a bitfield mutable. Can I?
I don't think so, but the value can be mutable, which would allow you to manipulate the needed nit. ___ Rob (Sent from my portable computation engine)