我以前有一段代码来提取某些部分

auto& c = m_matrix[name];
....large block of code with using c in the calculation...

现在我必须使用if / else或switch大小写m_matrix选项,例如以下语句:
switch input{
  case 1:
     auto& c = A[name];
  case 2:
     auto& c = B[name];
}
....large block of code with using c in the calculation...

A和B具有相同类型的元素。但是,这是错误的,因为它将表明c的定义是重复的。同时,我无法声明auto&c;。切换/案例之前以及以下内容:
auto& c;
switch input {
   case 1:
      c = A[name];
   case 2:
      c = B[name];
}

....large block of code with using c in the calculation...

有办法解决这个问题吗?

更新:CinCout-恢复莫妮卡提供的解决方案
switch input {
   case 1:{
      auto& c = A[name];
      ....large block of code with using c in the calculation...
   }
   case 2:{
      auto& c = B[name];
      ....large block of code with using c in the calculation...
   }
}

有没有办法避免每种情况下的重复代码?谢谢

最佳答案

只需给每个case一个自己的范围,有效地给每个c一个本地范围:

switch input
{
  case 1:
  {
     auto& c = A[name];
     …
     break;
  }
  case 2:
  {
     auto& c = B[name];
     …
     break;
  }
}

关于c++ - 如何以其他方式或转换案例格式编码auto&?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59331879/

10-10 08:56