
On 7/9/06, Daryle Walker <darylew@hotmail.com> wrote:
exception_info & info (get_exception_info(e)); info ++; // won't work, unless operator++ is defined for exception_info
As another poster said, you can take the address of "info" and then repeat the same stupid pointer tricks. The programmer's advice, "guard against Murphy, not Machiavelli," applies here. Your pointer flaw isn't because of this library's API, it's a general problem in C++. That's because all pointers define the ++ and -- operators for use with array segments, ignoring the fact that a pointer can be indistinctively used for single objects. In other words: "if you see this code, fire the programmer".
That's why I would like to use references -- because if the user of the library _still_ got the address, then he _had_ to get the address and put it in a pointer to do something potentially stupid with it. That's just preventing the regular user from making a mistake by side-stepping pointers in the API itself. And I agree -- if the programmer _still_ did the stupid &get_exception_info() and did a ++ on the pointer, then maybe that programmer should get fired. ;) -- Dean Michael C. Berris C/C++ Software Architect Orange and Bronze Software Labs http://3w-agility.blogspot.com/ http://cplusplus-soup.blogspot.com/ Mobile: +639287291459 Email: dean [at] orangeandbronze [dot] com