替换typedef或使用typedef和if else的正确方法

时间:2013-07-08 09:38:14

标签: c++ typedef

我有以下条件:

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具有本地范围,我必须这样做。有没有办法做到这一点?

1 个答案:

答案 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;
}