switch(work_state_ptr->cutter_type)
{
case 1:
boost::shared_ptr<ocl::CylCutter> cutter1(new ocl::CylCutter(work_state_ptr->cutter_diameter,work_state_ptr->cutter_Lc));
GeneratePathforCutter(*(cutter1.get()),stl_sf);
break;
case 2:
boost::shared_ptr<ocl::BallCutter> cutter2(new ocl::BallCutter(work_state_ptr->cutter_diameter,work_state_ptr->cutter_Lc));
GeneratePathforCutter(*(cutter2.get()),stl_sf);
break;
case 3:
boost::shared_ptr<ocl::BullCutter> cutter3(new ocl::BullCutter(work_state_ptr->cutter_diameter, work_state_ptr->cutter_radius,work_state_ptr->cutter_Lc));
GeneratePathforCutter(*(cutter3.get()),stl_sf);
break;
case 4:
boost::shared_ptr<ocl::ConeCutter> cutter4(new ocl::ConeCutter(work_state_ptr->cutter_diameter,work_state_ptr->cutter_B1,work_state_ptr->cutter_Lc));
GeneratePathforCutter(*(cutter4.get()),stl_sf);
break;
default:
break;
}
錯誤:error C2360: “cutter1”的初始化操作由“case”標籤跳過
分析原因:在case 可能沒有被執行到時,對象就沒有相應的初始化導致。
解決方法是:在每個case裏面都加入大括號“{ }”,使每個對象都成爲局部變量。
即:
switch(work_state_ptr->cutter_type)
{
case 1:
{
boost::shared_ptr<ocl::CylCutter> cutter1(new ocl::CylCutter(work_state_ptr->cutter_diamet er,work_state_ptr->cutter_Lc));
GeneratePathforCutter(*(cutter1.get()),stl_sf);
break;
}
case 2:
{
boost::shared_ptr<ocl::BallCutter> cutter2(new ocl::BallCutter(work_state_ptr->cutter_diameter,work_state_ptr->cutter_Lc));
GeneratePathforCutter(*(cutter2.get()),stl_sf);
break;
}
case 3:
{
boost::shared_ptr<ocl::BullCutter> cutter3(new ocl::BullCutter(work_state_ptr->cutter_diameter,work_state_ptr->cutter_radius,work_state_ptr->cutter_Lc));
GeneratePathforCutter(*(cutter3.get()),stl_sf);
break;
}
case 4:
{
boost::shared_ptr<ocl::ConeCutter> cutter4(new ocl::ConeCutter(work_state_ptr->cutter_diameter,work_state_ptr->cutter_B1,work_state_ptr->cutter_Lc));
GeneratePathforCutter(*(cutter4.get()),stl_sf);
break;
}
default:
break;
}