[ITK] [ITK-users] itk::LightObject does not expose operator<< in .h header
Bradley Lowekamp
blowekamp at mail.nih.gov
Tue Apr 1 08:55:04 EDT 2014
Hello,
I am looking over your patch now.
I just had a comment on you code here... You have place the operator in the std namespace. Modifying the std namespace is not allowed, and can give warnings or error on some compilers.
These operators should be in the same namespace as the object. C++ should find the correct operator called from any namespace due to argument-dependent name lookup[1]. This is an advance C++ concept that many people don't know they are using, so I'd thought I'd just share the info.
Brad
[1] http://en.wikipedia.org/wiki/Argument-dependent_name_lookup
On Mar 21, 2014, at 2:38 PM, Taylor Braun-Jones <taylor at braun-jones.org> wrote:
> Hello Insight-users,
>
> I'm trying to print an itk::LightObject-derived class with something like:
>
> MyClass::Pointer fooBar = MyClass::New();
> std::cout << *fooBar;
>
> But it doesn't seem to be possible because the declaration of operator<< is not exposed in itkLightObject.h (although one is defined in itkLightObject.cxx). I know I can use fooBar->Print(std::cout), but this doesn't work when I'm trying to print to a logging system that was designed to support any object with an overloaded operator<< defined. I am able to get things to work by defining the operator myself:
>
> namespace std
> {
> ostream &
> operator<<(ostream & os, const itk::LightObject & o)
> {
> o.Print(os);
> return os;
> }
> }
>
> But is this the intended usage?
>
> Thanks,
> Taylor
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/community/attachments/20140401/c682fc05/attachment.html>
-------------- next part --------------
_____________________________________
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php
Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ
Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users
More information about the Community
mailing list