[Insight-users] typedef name cannot follow class/struct/union
Andreas Schuh
andreas.schuh.84 at googlemail.com
Tue Feb 2 20:12:08 EST 2010
Here we go ...
Replace class by typename in
template < class TInputImage, class TOutputImage, class TForegroundConnectivity,
class TPriorityImage=TInputImage, class TInhibitImage=TInputImage,
class TBackgroundConnectivity = class
BackgroundConnectivity<TForegroundConnectivity>::Type >
class ITK_EXPORT UltimateSkeletonImageFilter : public
ImageToImageFilter< TInputImage, TOutputImage >
class TBackgroundConnectivity = typename
BackgroundConnectivity<TForegroundConnectivity>::Type
Andreas
On Tue, Feb 2, 2010 at 8:07 PM, <Neil.Burdett at csiro.au> wrote:
> Hi guys,
> I attach the header files for Connectivity.h and
> UltimateSkeletonImageFilter.h
>
> Thanks for taking the time
>
> Neil
>
> -----Original Message-----
> From: Bill Lorensen [mailto:bill.lorensen at gmail.com]
> Sent: Wednesday, 3 February 2010 10:35 AM
> To: Andreas Schuh
> Cc: Burdett, Neil (ICT Centre, Herston - RBWH); insight-users at itk.org
> Subject: Re: [Insight-users] typedef name cannot follow class/struct/union
>
> It is hard to tell without seeing the rest of the code.
>
> For example, what is itk::Connectivity? Have you included all the proper
> files?
>
> Can you reproduce the error with a small compilable program that you can
> post?
>
> Bill
>
> On Tue, Feb 2, 2010 at 7:24 PM, Andreas Schuh
> <andreas.schuh.84 at googlemail.com> wrote:
> > Well, how does the declaration of itk::UltimateSkeletonImageFilter look
> > like? Just the class declaration not all methods ...
> >
> > Andreas
> >
> > On Tue, Feb 2, 2010 at 7:07 PM, <Neil.Burdett at csiro.au> wrote:
> >>
> >> Hi Andreas;
> >>
> >>
> >> const int Dimension = 3;
> >>
> >> typedef unsigned short DistancePixelType;
> >>
> >> typedef itk::Image< DistancePixelType, Dimension > DistanceImageType;
> >>
> >>
> >>
> >> Note that in the same file we have a number of other typedef that
> >> compile fine i.e.
> >>
> >> // Prepare the priority function
> >>
> >> typedef typename itk::DanielssonDistanceMapImageFilter<TOutputImage,
> >> DistanceImageType> DanielssonDistanceMapImageFilterType;
> >>
> >> typename DanielssonDistanceMapImageFilterType::Pointer
> >> danielssonDistanceMapFilter =
> DanielssonDistanceMapImageFilterType::New();
> >>
> >> ....
> >>
> >> // Compute a surfacic skeleton
> >>
> >> typedef typename itk::ParallelSkeletonImageFilter<TOutputImage,
> >> TOutputImage, itk::Connectivity<Dimension, 0> >
> >> ParallelSkeletonImageFilterType;
> >>
> >> typename ParallelSkeletonImageFilterType::Pointer parallelSkeletonFilter
> =
> >> ParallelSkeletonImageFilterType::New();
> >>
> >> ...
> >>
> >> // Delete all small components (extract the largest connected component
> in
> >> the image)
> >>
> >> typedef typename itk::LargestConnectedComponentImageFilter<TOutputImage,
> >> TOutputImage> LargestConnectedComponentImageFilterType;
> >>
> >> typename LargestConnectedComponentImageFilterType::Pointer
> >> largestConnectedComponentFilter =
> >> LargestConnectedComponentImageFilterType::New();
> >>
> >> etc...
> >>
> >>
> >>
> >> Maybe its an issue with itk::UltimateSkeletonImageFilter ??
> >>
> >> Neil
> >>
> >>
> >>
> >> ________________________________
> >> From: Andreas Schuh [mailto:andreas.schuh.84 at googlemail.com]
> >> Sent: Wednesday, 3 February 2010 9:41 AM
> >> To: Burdett, Neil (ICT Centre, Herston - RBWH)
> >> Subject: Re: [Insight-users] typedef name cannot follow
> class/struct/union
> >>
> >> Hi,
> >>
> >> How are TOutputImage, DistanceImageType and Dimension declared/defined?
> >> How is the template method/class itself declared?
> >>
> >> Andreas
> >>
> >> On Tue, Feb 2, 2010 at 5:44 PM, <Neil.Burdett at csiro.au> wrote:
> >>>
> >>> Hi Andreas and Bill,
> >>> Thanks for the replies. As mentioned in my previous
> >>> post if I remove the "typename" I continue to get the same error:
> >>>
> >>> "error C2242: typedef name cannot follow class/struct/union"
> >>>
> >>> You are correct that the second line after this is a cut and paste
> error
> >>> so the actual code is:
> >>>
> >>> // Compute the seed image, by closing cavities and holes with an
> >>> ultimate skeleton of the cuboid image
> >>> typedef itk::UltimateSkeletonImageFilter<TOutputImage, TOutputImage,
> >>> itk::Connectivity<Dimension, 0>, DistanceImageType >
> SeedSkeletonFilterType;
> >>>
> >>> typename SeedSkeletonFilterType::Pointer seedSkeletonFilter =
> >>> SeedSkeletonFilterType::New();
> >>> seedSkeletonFilter->SetInput(cuboidImage->GetOutput());
> >>>
> >>>
> seedSkeletonFilter->SetPriorityImage(distanceInvertIntensityFilter->GetOutput());
> >>>
> >>>
> seedSkeletonFilter->SetInhibitImage(parallelSkeletonFilter->GetOutput());
> >>> try{
> >>> seedSkeletonFilter->Update();
> >>> } catch(itk::ExceptionObject &ex) {
> >>> throw itk::ExceptionObject("milxTopologicalHolesFilling", 0,
> >>> std::string("Topological holes filling.. seed ultimate skeleton failed:
> ") +
> >>> ex.GetDescription());
> >>> }
> >>>
> >>> Anymore ideas? This error occurs on both VS 2005 and VS 2008
> >>>
> >>> Cheers
> >>> Neil
> >>>
> >>> -----Original Message-----
> >>> From: Andreas Schuh [mailto:andreas.schuh.84 at googlemail.com]
> >>> Sent: Tuesday, 2 February 2010 2:49 PM
> >>> To: Burdett, Neil (ICT Centre, Herston - RBWH)
> >>> Cc: itk
> >>> Subject: Re: [Insight-users] typedef name cannot follow
> >>> class/struct/union
> >>>
> >>> Hi Neil,
> >>>
> >>> Try
> >>>
> >>> typedef itk::UltimateSkeletonImageFilter<TOutputImage, TOutputImage,
> >>> itk::Connectivity<Dimension, 0>, DistanceImageType >
> SeedSkeletonFilterType;
> >>>
> >>> There is no typename specified necessary here. Actually, I think it's
> >>> wrong to use it.
> >>>
> >>> The second line after this one in your mail might just be a
> >>> copy-and-paste relict while you were composing the mail. Because it
> doesn't
> >>> make sense at all ...
> >>>
> >>> The use of the second typename for the pointer type declaration is fine
> >>> and for compilers like the VC6 also necessary.
> >>>
> >>> Andreas
> >>>
> >>>
> >>> On Feb 1, 2010, at 11:20 PM, <Neil.Burdett at csiro.au> wrote:
> >>>
> >>> > Hi Bill and Dan,
> >>> > thanks for the reply, but removing typename, or replacing it
> >>> > with ITK_TYPENAME gives exactly the same error in visual studio 2008;
> >>> >
> >>> > "error C2242: typedef name cannot follow class/struct/union"
> >>> >
> >>> > The full extract of code I'm using is;
> >>> >
> >>> > // Compute the seed image, by closing cavities and holes with an
> >>> > ultimate skeleton of the cuboid image
> >>> > typedef typename itk::UltimateSkeletonImageFilter<TOutputImage,
> >>> > TOutputImage, itk::Connectivity<Dimension, 0>, DistanceImageType >
> >>> > SeedSkeletonFilterType;
> >>> > itk::UltimateSkeletonImageFilter<TOutputImage, TOutputImage,
> >>> > itk::Connectivity<Dimension, 0>, DistanceImageType >
> SeedSkeletonFilterType;
> >>> >
> >>> > typename SeedSkeletonFilterType::Pointer seedSkeletonFilter =
> >>> > SeedSkeletonFilterType::New();
> >>> > seedSkeletonFilter->SetInput(cuboidImage->GetOutput());
> >>> >
> >>> >
> seedSkeletonFilter->SetPriorityImage(distanceInvertIntensityFilter->GetOutput());
> >>> >
> >>> >
> seedSkeletonFilter->SetInhibitImage(parallelSkeletonFilter->GetOutput());
> >>> > try{
> >>> > seedSkeletonFilter->Update();
> >>> > } catch(itk::ExceptionObject &ex) {
> >>> > throw itk::ExceptionObject("milxTopologicalHolesFilling", 0,
> >>> > std::string("Topological holes filling.. seed ultimate skeleton
> failed: ") +
> >>> > ex.GetDescription());
> >>> > }
> >>> >
> >>> > Neil
> >>> >
> >>> > -----Original Message-----
> >>> > From: Bill Lorensen [mailto:bill.lorensen at gmail.com]
> >>> > Sent: Monday, 1 February 2010 11:46 PM
> >>> > To: Burdett, Neil (ICT Centre, Herston - RBWH)
> >>> > Cc: insight-users at itk.org
> >>> > Subject: Re: [Insight-users] typedef name cannot follow
> >>> > class/struct/union
> >>> >
> >>> > I think the typename can be removed on both Windows and linux. My
> >>> > general rule for typename is that it is required if there are no
> >>> > template variables.
> >>> >
> >>> > For example
> >>> >
> >>> > typedef Foo<bar> FooBarType;
> >>> >
> >>> > typedef typename Foo::Pointer FooPointer;
> >>> >
> >>> > On Sun, Jan 31, 2010 at 11:39 PM, <Neil.Burdett at csiro.au> wrote:
> >>> >> Hi,
> >>> >>
> >>> >> I am currently porting an application from Ubuntu to windows.
> The
> >>> >> line
> >>> >> of code below compiles on Ubuntu but not on visual studio...
> >>> >>
> >>> >>
> >>> >>
> >>> >> typedef typename itk::UltimateSkeletonImageFilter<TOutputImage,
> >>> >> TOutputImage, itk::Connectivity<Dimension, 0>, DistanceImageType >
> >>> >> SeedSkeletonFilterType;
> >>> >>
> >>> >>
> >>> >>
> >>> >> I receive the error in visual studio 2008 "error C2242: typedef name
> >>> >> cannot
> >>> >> follow class/struct/union"
> >>> >>
> >>> >>
> >>> >>
> >>> >> Any help would be appreciated.
> >>> >>
> >>> >>
> >>> >>
> >>> >> Neil
> >>> >>
> >>> >> _____________________________________
> >>> >> 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.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-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.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-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.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-users
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20100202/3ee911da/attachment.htm>
More information about the Insight-users
mailing list