C++ typedef的替代方法或将typedef与if-else一起使用的正确方法

C++ typedef的替代方法或将typedef与if-else一起使用的正确方法,c++,typedef,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) { typ

我有以下情况:

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);
    }
if(类型==1)
{
typedef-itk::Image-itkImageType;
itkImageType::指针图像;
图像=打开(文件名);
写入图像->移植(图像);
}
else if(类型==2)
{
typedef-itk::Image-itkImageType;
itkImageType::指针图像;
图像=打开(文件名);
写入图像->移植(图像);
}

共有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;
}
模板
void doStuffAndOpen(){
//一些使用像素类型的东西
打开(文件名);
}
//然后,无论你想在哪里用像素类型做东西
开关(类型){
案例1:
doStuffAndOpen();
打破
案例2:
doStuffAndOpen();
打破
}

只需将常用内容放入函数中即可。这就是函数的用途:

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;
}
模板
void doStuffAndOpen(){
//一些使用像素类型的东西
打开(文件名);
}
//然后,无论你想在哪里用像素类型做东西
开关(类型){
案例1:
doStuffAndOpen();
打破
案例2:
doStuffAndOpen();
打破
}

只要。。。将所有常用的内容放在函数模板中?编译时是否知道
type
的值?实际上,为了便于理解,我删除了该常用内容中的一些行,还有另一个typedef,它使用的是PixelType,实际上,我必须将该类型传递给Open函数。我刚刚又编辑了一个问题。。。将所有常用的内容放在函数模板中?编译时是否知道
type
的值?实际上,为了便于理解,我删除了该常用内容中的一些行,还有另一个typedef,它使用的是PixelType,实际上,我必须将该类型传递给Open函数。我重新编辑了问题不要忘记案例1中的中断;-)不要忘记案例1中的中断;-)