0

我有以下情况:

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

4

1 回答 1

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;
}
于 2013-07-08T09:42:08.993 回答