我有以下情况:

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具有局部作用域,因此我必须这样做。有什么办法吗?

最佳答案

只需将常见内容放入函数中即可。那是什么功能:

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

关于c++ - 替代typedef或使用if的正确方式,否则,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17523390/

10-11 22:05
查看更多