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

Lydia Ng lng@insightful.com
Wed, 24 Jan 2001 11:07:37 -0800


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