[Fwd: [Insight-developers] TImage::ImageDimension]

Yinpeng Jin yj76@columbia.edu
Wed, 24 Jan 2001 14:19:44 -0500


Yes, this works for me. thanks.
BTW, how to access the Input Image size in the below case?

template<class Tinput, class Toutput>
class A:public FilterImageToImage<Tinput,Touput>
{

void fun(){
   Tinput::SizeType size;
   size=this->GetInput()->GetSize();
  }

}

is this gona to work?





----- Original Message -----
From: "Lydia Ng" <lng@insightful.com>
To: "'Bill Hoffman'" <bill.hoffman@kitware.com>; <luis.ibanez@ieee.org>;
"'Yinpeng Jin'" <yj76@columbia.edu>
Cc: <insight-developers@public.kitware.com>
Sent: Wednesday, January 24, 2001 1:40 PM
Subject: RE: [Fwd: [Insight-developers] TImage::ImageDimension]


>
> To make all the compilers happy I have resorted to doing
> an enum of the image dimension inside the class.
> E.g.
>
> template <class Tinput>
> class A{
>
> enum {ImageDimension = Tinput::ImageDimension };
> typedef Image <bool, ImageDimension> boolImage;
>
> boolImage::Pointer m_boolMember;
>
> }
>
> Lydia
>
>
> > -----Original Message-----
> > From: insight-developers-admin@public.kitware.com
> > [mailto:insight-developers-admin@public.kitware.com]On Behalf Of Bill
> > Hoffman
> > Sent: Wednesday, January 24, 2001 10:22 AM
> > To: luis.ibanez@ieee.org; Yinpeng Jin
> > Cc: insight-developers@public.kitware.com
> > Subject: Re: [Fwd: [Insight-developers] TImage::ImageDimension]
> >
> >
> > His output seems to have an error:
> >
> >
> > 'itk::SegmentFuzzyBasic<TInputImage,TOutputImage>' being compiled
> > c:\insight\insight\code\common\itkimage.h(419) : error C2229: class
> > 'itk::Image<double,0,class
> > itk::ValarrayImageContainer<unsigned long,double>
> > >' has an illegal zero-sized array
> >
> >
> > At 12:16 PM 1/24/2001 -0500, Luis Ibanez wrote:
> > >Hi Yinpeng,
> > >
> > >It looks like a similar problem that we have
> > >encounter previously.
> > >
> > >This is a warning tha only happens in VC++,
> > >and in spite of the warning, the code runs
> > >correctly.
> > >
> > >
> > >
> > >
> > >-------- Original Message --------
> > >Subject: [Insight-developers] TImage::ImageDimension
> > >Date: Fri, 27 Oct 2000 11:06:09 -0400
> > >From: Luis Ibanez <ibanez@cs.unc.edu>
> > >Reply-To: luis.ibanez@ieee.org
> > >Organization: Medical Image Display and Analysis Group MIDAG-UNC
> > >To: "insight-developers@public.kitware.com"
> > ><insight-developers@public.kitware.com>
> > >References:
> > ><7F537688E0D6D0119A0B00805FFEBE9404660F3F@exc03crdge.crd.ge.com>
> > >
> > >
> > >Hi,
> > >
> > >Looking closer into the problem of using ImageDimension,
> > >there are some funny facts:
> > >
> > >1) In VC++ 6.0 this produce  a warning, not an error
> > >
> > >2) The warning doesn't appears with gcc,  maybe
> > >     because gcc doesn't complain about zero
> > >    size arrays being declared  like:    int m[0];
> > >
> > >3)  In spite of the warning,...
> > >      the code runs ok  with gcc and VC++.
> > >
> > >------
> > >
> > >This is a minimal example of the similar situation.
> > >Here, a short "Image" class is used, just to isolate
> > >the code from the rest of Insight, so the attached
> > >file is self-contained.
> > >
> > >The output of the program shows that the dimension
> > >of the image created inside the process object is
> > >really 3 as expected.
> > >
> > >I will speculate that this is due to the different aspects
> > >of the code that are checked during the several compiler
> > >passes.  Perhaps enums are initialized after array sizes
> > >are checked....
> > >
> > >
> > >
> > >Luis
> > >
> > >
> > >==================================
> > >
> > >#include <iostream>
> > >
> > >//--------------------------------
> > >// Image Class
> > >//--------------------------------
> > >template <class T, unsigned int N>
> > >class Image {
> > >public:
> > >  enum { ImageDimension = N };
> > >  typedef Image * Pointer;
> > >private:
> > >  unsigned int Index[N];
> > >};
> > >
> > >
> > >//--------------------------------
> > >// Process Class
> > >//--------------------------------
> > >template <class TImage>
> > >class myProcess {
> > >  typedef Image<int, TImage::ImageDimension> TempImage;
> > >  typename TempImage::Pointer temp;
> > >public:
> > >  myProcess() {
> > >    std::cout << "image dimension = ";
> > >    std::cout <<  TempImage::ImageDimension << std::endl;
> > >  }
> > >};
> > >
> > >//--------------------------------
> > >// Main
> > >//--------------------------------
> > >int main()
> > >{
> > >  typedef Image<float,3> myImageType;
> > >  myProcess<myImageType> process;
> > >  return 0;
> > >}
> > >
> > >
> > >
> > >
> > >--
> > >_____________________________________________________________
> > _________
> > >
> > >Luis Ibanez
> > >Research Assistant Professor - Division of Neurosurgery
> > >University of North Carolina at Chapel Hill
> > >CB# 7060, Chapel Hill, NC 27599
> > >email : ibanez@cs.unc.edu       home  : http://www.cs.unc.edu/~ibanez
> > >phone : (919)-843-9961          fax   : (919)-966-6627
> > >_____________________________________________________________
> > _________
> >
> >
> > _______________________________________________
> > Insight-developers mailing list
> > Insight-developers@public.kitware.com
> > http://public.kitware.com/mailman/listinfo/insight-developers