我有以下条件:
if( type == 1)
{
typedef itk::Image<unsigned char, 3> itkImageType;
itkImageType::Pointer image;
image =Open<itkImageType>(filename);
writeimage->Graft(image);
}
else if(type == 2)
{
typedef itk::Image<unsigned char, 3> itkImageType;
itkImageType::Pointer image;
image =Open<itkImageType>(filename);
writeimage->Graft(image);
}
有10个案例,而typedef之后的东西在所有if-else中都很常见。我想删除此代码重复,但由于typedef具有本地范围,我必须这样做。有没有办法做到这一点?
答案 0 :(得分:3)
只需将常用内容放入函数中即可。这就是函数的用途:
template <typename PixelType>
void doStuffAndOpen() {
//Some stuff which use Pixel Type
Open<PixelType>(filename);
}
// and then wherever you want to do stuff with the PixelType
switch (type) {
case 1:
doStuffAndOpen<unsigned char>();
break;
case 2:
doStuffAndOpen<unsigned int>();
break;
}