<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman, new york, times, serif;font-size:12pt"><DIV>Hi Andreas:</DIV>
<DIV>&nbsp;</DIV>
<DIV>Thanks so much.</DIV>
<DIV>&nbsp;</DIV>
<DIV>I understand why my program is wrong, but don not know the solution.</DIV>
<DIV>&nbsp;</DIV>
<DIV>Thanks again.</DIV>
<DIV>&nbsp;</DIV>
<DIV>baoyun<BR></DIV>
<DIV style="FONT-SIZE: 12pt; FONT-FAMILY: times new roman, new york, times, serif"><BR>
<DIV style="FONT-SIZE: 13px; FONT-FAMILY: arial, helvetica, sans-serif"><FONT face=Tahoma size=2>
<HR SIZE=1>
<B><SPAN style="FONT-WEIGHT: bold">From:</SPAN></B> Andreas Schuh &lt;andreas.schuh.84@googlemail.com&gt;<BR><B><SPAN style="FONT-WEIGHT: bold">To:</SPAN></B> Baoyun Li &lt;baoyun_li123@yahoo.com&gt;<BR><B><SPAN style="FONT-WEIGHT: bold">Cc:</SPAN></B> "insight-users@itk.org" &lt;insight-users@itk.org&gt;<BR><B><SPAN style="FONT-WEIGHT: bold">Sent:</SPAN></B> Wednesday, March 18, 2009 4:33:29 PM<BR><B><SPAN style="FONT-WEIGHT: bold">Subject:</SPAN></B> Re: how to template the image dimension or vector dimesion in template function<BR></FONT><BR>Hi Baoyun,<BR><BR>use the static constant itk::Vector::Dimension instead.<BR><BR>typedef typename itk::Vector&lt; double, VectorPixelType::Dimension &gt; MeasurementVectorType;<BR><BR>itk::Vector::GetVectorDimension() is a static method that has to be evaluated at runtime to get the number of components. For template arguments you need constant values that can be derived at compile time. itk::Vector::Dimension,
 therefore, is a public static const class member, instead.<BR><BR>--<BR>regards<BR>Andreas<BR><BR>Baoyun Li schrieb:<BR>&gt; Dear Andreas and all:<BR>&gt;&nbsp; Can you please teach me how to template the image dimension or vector dimesion in template function.<BR>&gt;&nbsp; In the following template function, if I give the vector dimension as<BR>&gt;&nbsp; typedef typename itk::Vector&lt; double,NumberOfComponents&gt; MeasurementVectorType;<BR>&gt; where Numberof compoents is obtained as trait<BR>&gt; const unsigned int NumberOfComponents=VectorPixelType::GetVectorDimension();<BR>&gt;&nbsp; The program cannot be build.<BR>&gt;&nbsp; Why and how to solve the problem?<BR>&gt;&nbsp; Thanks<BR>&gt;&nbsp; Baoyun<BR>&gt;&nbsp; template &lt;unsigned int Dim,unsigned int NumberOfComponents1,class TInputFilter,&nbsp; class TOutputFilter&gt;<BR>&gt; void EMClustering( typename TInputFilter::Pointer&amp; inputfilter, typename TOutputFilter::Pointer&amp;
 outputfilter)<BR>&gt; {<BR>&gt;&nbsp; &nbsp; typedef typename TInputFilter::PixelType VectorPixelType;<BR>&gt;&nbsp; &nbsp; typedef typename TInputFilter::PixelType::SizeType Num;<BR>&gt;&nbsp; &nbsp; const unsigned int NumberOfComponents=VectorPixelType::GetVectorDimension();<BR>&gt;&nbsp; &nbsp; const unsigned int Dim1=TInputFilter::GetImageDimension();<BR>&gt;&nbsp; &nbsp; typedef typename itk::Vector&lt; double,NumberOfComponents&gt; MeasurementVectorType;<BR>&gt;&nbsp; typedef typename itk::Statistics::ListSample&lt; MeasurementVectorType &gt; SampleType;<BR>&gt;&nbsp; // SampleType::Pointer sample = SampleType::New();<BR>&gt;&nbsp; // sample-&gt;SetMeasurementVectorSize(NumberOfComponents );<BR>&gt;&nbsp; // MeasurementVectorType mv;<BR>&gt;&nbsp; };<BR>&gt;&gt; ml&gt;<BR>&gt; <BR><BR></DIV></DIV></div><br>

      </body></html>