|
Boost : |
From: Dean Michael Berris (mikhailberis_at_[hidden])
Date: 2006-07-07 17:31:54
On 7/8/06, Felipe Magno de Almeida <felipe.m.almeida_at_[hidden]> wrote:
>
> I prefer the pointer, that way one can define the variable inside the if
>
> if(exception_info* p = get_exception_info(e))
> {
>
> }
>
I don't see the benefit in this since if exception_info is defined in
the following sense:
struct exception_info {
exception_info() : is_valid(false) {};
exception_info(const exception_info & other) : is_valid(other.is_valid) {};
bool is_valid;
...
operator bool () {
// return true if it's a copy of a real
// exception, false if it's uninitialized...
return is_valid;
}
...
};
Then something like this will be possible:
if (get_exception_info(e)) {
std::cout << get_string<tag_file_name>(get_exception_info(e)) << std::endl;
}
>
> IMO, the pointer is cleaner.
>
Since a pointer is basically a primitive type which you can manipulate
like an integral type, it opens up a can of worms you don't want to
deal with -- and will only make the code a lot easier to get wrong.
Since you can manipulate pointers like int's, the following operations
will be valid:
exception_info * x = get_exception_info(e);
x++;
++x;
But if you're using references, you give a cleaner and more definite
handle to your data:
exception_info & info (get_exception_info(e));
info ++; // won't work, unless operator++ is defined for exception_info
HTH
-- 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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk