我有以下情况:
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/