[Insight-developers] Iterators & "operator *"
Gert Wollny
gert at die.upm.es
Wed May 28 07:14:58 EDT 2008
Hi Luis,
I've localised the problem,
m_Buffer is declared as
const InternalPixelType * m_Buffer;
in itkImageConstIterator, but reused in itkImageIterator where it must
not be const. Therefore, the const_cast<> are needed to write to values
pointed at by m_Buffer. I'm wondering why the problem didn't show up
when compiling the examples and/or the tests.
I'm not sure how to resolve this problem easily and make the code
cost-correct.
One option would be to add a second pointer,
InternalPixelType *m_WriteBufferPtr
to the itkImageIterator.
Second option would be, to de-couple the two classes completely, which
would most likely result in code duplication.
I'm thinking about more options.
Best,
Gert
Am Dienstag, den 27.05.2008, 11:52 -0400 schrieb Luis Ibanez:
> Hi Gert,
>
> We got the following secondary effects from the removal
> of the const_cast statements in the itkImageIterator.h:
>
> http://www.cdash.org/CDash/viewBuildError.php?buildid=85846
>
>
> Could you please take a second look at the patch and
> suggest an alternative ?
>
>
> Thanks
>
>
> Luis
>
>
> ==========================================================
> Site:marvin.jouy.inra.fr
>
> Build Name:Linux-gcc-Debug
>
> Build Time:2008-05-26 21:14:00 EDT
> Found 4 Errors
>
> Warnings are here.
> Build Log line 541
>
> File: Code/Common/itkImageIterator.h Line: 118 CVS/SVN
>
> [ 17%] Building CXX object
> Code/Common/CMakeFiles/ITKCommon.dir/Templates/itkImageIteratorIVUS53.o
> /.../Insight/Code/Common/itkImageIterator.h: In member function 'void
> itk::ImageIterator<TImage>::Set(const typename
> itk::ImageConstIterator<TImage>::PixelType&) const [with TImage =
> itk::Templates::ImageVUS53]':
> /.../Insight/build-debug/Code/Common/Templates/itkImageIteratorIVUS53.cxx:5:
> instantiated from here
>
> /.../Insight/Code/Common/itkImageIterator.h:118: error: no matching
> function for call to
> 'itk::DefaultPixelAccessorFunctor<itk::Image<itk::Templates::VectorUS5,
> 3u> >::Set(const itk::Vector<short unsigned int, 5u>&, const
> itk::Vector<short unsigned int, 5u>&) const'
>
> Build Log line 545
>
> File: Code/Common/itkImageIterator.h Line: 125 CVS/SVN
>
> /.../Insight/Code/Common/itkImageIterator.h:125: error: invalid
> initialization of reference of type 'itk::Templates::VectorUS5&' from
> expression of type 'const itk::Vector<short unsigned int, 5u>'
>
> /.../Insight/Code/Common/itkImageIterator.h: In member function
> 'typename itk::ImageConstIterator<TImage>::ImageType*
> itk::ImageIterator<TImage>::GetImage() const [with TImage =
> itk::Templates::ImageVUS53]':
> /.../Insight/build-debug/Code/Common/Templates/itkImageIteratorIVUS53.cxx:5:
> instantiated from here
>
> Build Log line 548
>
> File: Code/Common/itkImageIterator.h Line: 139 CVS/SVN
>
> /.../Insight/Code/Common/itkImageIterator.h:139: error: invalid
> conversion from 'const itk::Image<itk::Templates::VectorUS5, 3u>*' to
> 'itk::Templates::ImageVUS53*'
>
> =============================================================================
>
> -----------------
> Luis Ibanez wrote:
> >
> > Hi Gert,
> >
> >
> > There is nothing better than a
> > reproducible experimental proof :-)
> >
> >
> > Thanks for reporting the bug and contributing the patch.
> >
> >
> > It has now been committed to the CVS repository:
> > http://www.itk.org/cgi-bin/viewcvs.cgi/Code/Common/itkImageIterator.h?root=Insight&r1=1.51&r2=1.52&sortby=date
> >
> >
> >
> > Please verify the new version at your convenience,
> > and feel free to close the bug if you think that
> > the issue has been solved.
> >
> >
> > Thanks
> >
> >
> > Luis
> >
> >
> >
> > ---------------------
> > Gert Wollny wrote:
> >
> >> Am Mittwoch, den 21.05.2008, 16:41 -0400 schrieb Luis Ibanez:
> >>
> >>> Hi Gert,
> >>>
> >>>
> >>> 1) Yes, I do like those 'const' :-)
> >>
> >>
> >> 'const' is great, no questions. Actually, the const can stay and
> >> const_cast<> go away :-) http://www.itk.org/Bug/view.php?id=7085
> >>
> >> Best,
> >> Gert
> >>
> >
>
More information about the Insight-developers
mailing list