It seems like SO often I need to attach a "valid" flag to a standard type. For example - I have a function called "CalculateLunchTime" that I pass a vector of times. If the vector has 0 elements, they did not take a lunch, so the duration is 0 minutes. If the vector has 2 elements, subtract them and that is the lunch duration. If the vector has one element, it doesn't make sense to calculate a duration, but I don't want to return 0 because that was for the first case. In this case the valid range is >0, so of course I could return -1 or something, but it really bothers me having these magic numbers running around. I would really want to do something like
ValidDouble LunchTime(vector<time> &Times)
{
ValidDouble lunchtime;
if(Times.size() == 1)
lunchtime.valid = false;
else
{
lunchtime = Times(1) - Times(0);
lunchtime.valid = true;
}
return lunchtime;
}
Of course I could make a struct with a double and a bool, but I have really never seen anyone else do that so I feel like it could be a bad idea (why?). It would seem a little nicer if I could derive ValidDouble from double. Is that possible?
Thanks,
Dave