[ITK Community] [Insight-users] dot product of itk vector was completely wrong

Tim Allman dr.tim.allman at gmail.com
Wed Feb 12 09:41:14 EST 2014


This brings up an issue with respect to design in C++.

I have made far too many mistakes like this over the years, usually in 
my own code but with third party libraries as well. This strikes me as a 
constructor that was written as a "convenience" and the compiler happily 
tried to find a way of turning the returned scalar into a vector and 
made no complaints when it did.

I would probably not included this constructor at all because the 
following would do the same thing and the code would be clearer and less 
brittle. If it turned out to be useful I would have made it explicit.

...
itk::Vector<double, 3> vec;
vec.Fill(28.0);
...

I think C++ tries to be too friendly and it is too easy to write 
perfectly legal code which doesn't do what you expect.

Just a few thoughts,
Tim

On 14-02-11 07:54 PM, Bradley Lowekamp wrote:
> David,
>
> Thanks for updating the Wiki Examples.
>
> Brad
>
> On Feb 11, 2014, at 3:45 PM, David Doria <daviddoria at gmail.com> wrote:
>
>> On Tue, Feb 11, 2014 at 3:04 PM, Bradley Lowekamp
>> <blowekamp at mail.nih.gov> wrote:
>>> http://www.itk.org/Doxygen/html/classitk_1_1Vector.html
>>>
>>> The return type for the operator* for a dot product is Vector::ValueType, a
>>> scalar, not a vector.
>>> http://www.itk.org/Doxygen/html/classitk_1_1Vector.html#a51bad5a3835ffc0fbbc02d5437f7e691
>>>
>>> By assigning to to a new Vector are implicitly calling this constructor:
>>> http://www.itk.org/Doxygen/html/classitk_1_1Vector.html#a106ee9550311054cceb66015e98c6457
>>>
>>> The example is wrong. Watch your types.
>>>
>>> Brad
>> Brad is right - the 'dotproduct' variable in the example should be a
>> VectorType::ComponentType, not just VectorType. I updated the page
>> with the fix.
>>
>> David
>> _____________________________________
>> 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
> _____________________________________
> 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

-- 
Tim Allman, Ph.D.
35 Margaret Street,
Guelph Ontario N1E 5R6
Canada

-------------- next part --------------
A non-text attachment was scrubbed...
Name: dr_tim_allman.vcf
Type: text/x-vcard
Size: 160 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/community/attachments/20140212/dc059c17/attachment-0002.vcf>
-------------- 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