[Insight-developers] itk::Array has an implicit conversion from unsigned int????

Bradley Lowekamp blowekamp at mail.nih.gov
Mon Mar 15 15:06:56 EDT 2010


Luis,

On Mar 15, 2010, at 2:32 PM, Luis Ibanez wrote:
> a1 = 60;   // assigns the value 60 to all the elements.
> 

I did not try this, but I don't know what operator or function this would call. There is no Array::operator=(TValueType&), so it may still call the nasty conversion constructor... I am curious now...


Brad



> 
> ---
> 
> I'm running a Linux Experimental build with Brad's suggested
> change, and if it comes out green, will commit it to the repository.
> 
> We will have to track the effect in other platforms...
> 
> 
>      Thanks
> 
> 
>          Luis
> 
> 
> -------------------------------------------------------------------------------------
> On Wed, Mar 10, 2010 at 2:55 PM, Bradley Lowekamp
> <blowekamp at mail.nih.gov> wrote:
>> I ran int to this before!
>> I believe I encountered it utilizing the new ITK Statistics, when trying to
>> set the size of perhaps a histogram. It expected an array but I used a
>> integer which got converted into some high dimension itk::Array.
>> Initializing a histogram with 256 dimension with zero bins in each
>> dimension. Needless to say it caused my program to crash, and after a fair
>> amount of time I tracked it down. Since I have been using the following:
>> Index: itkArray.h
>> ===================================================================
>> RCS file: /cvsroot/Insight/Insight/Code/Common/itkArray.h,v
>> retrieving revision 1.47
>> diff -r1.47 itkArray.h
>> 60c60
>> <   Array(unsigned int dimension);
>> ---
>>>  explicit Array(unsigned int dimension);
>> 
>> I didn't audit other array types to ensure that this insidious  implicit
>> constructor isn't else where. But I have been building ITK with it for a
>> while and the explicit qualifier does not cause any problems else where.
>> Brad
>> 
>> On Mar 10, 2010, at 1:40 PM, kent williams wrote:
>> 
>> I ran into this today.  I thought I was dealing with a drop-in replacement
>> ITK class, but the old class defined a method/member variable like this:
>> 
>> itkSetMacro( MaximumNumberOfIterations, unsigned int);
>> 
>> and the new class did this:
>> 
>> itkSetMacro( MaximumNumberOfIterations, itk::Array<unsigned int>);
>> 
>> The unexpected thing was that this:
>> 
>> x->SetMaximumNumberOfIterations(50);
>> 
>> compiled without complaint.
>> 
>> When I debugged it, it turns out the second case is equivalent to
>> 
>> itk::Array<unsigned int> anonymousTemp(50);
>> x->SetMaximumNumberOfIterations(anonymousTemp);
>> 
>> My reaction when I discovered this was WTF? (or What the Frumious
>> Bandersnatch).
>> 
>> Where is the implicit conversion from unsigned int to itk::Array, and is
>> this even a desirable thing?
>> 
>> _______________________________________________
>> 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://kitware.com/products/protraining.html
>> 
>> 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-developers
>> 
>> ========================================================
>> 
>> Bradley Lowekamp
>> 
>> Lockheed Martin Contractor for
>> 
>> Office of High Performance Computing and Communications
>> 
>> National Library of Medicine
>> 
>> blowekamp at mail.nih.gov
>> 
>> 
>> _______________________________________________
>> 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://kitware.com/products/protraining.html
>> 
>> 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-developers
>> 
>> 



More information about the Insight-developers mailing list