我使用visual studi 2008.(c ++)
在我的交换机案例中,我想创建一个对象,但我不会工作。
是不是我在交换机案例中无法创建对象?
如果这是对的,那么解决它的最佳方法是什么,
创建该对象的新方法?
编辑代码:
switch (causwahl){
case '1':
cAccount *oAccount = new cAccount (ID);
case '2' ....
答案 0 :(得分:12)
我无法用这么模糊的问题说出来,但我猜你正在做这样的事情:
switch(foo)
{
case 1:
MyObject bar;
// ...
break;
case 2:
MyObject bar;
// ...
break;
}
这是不允许的,因为每个case语句具有相同的范围。如果要使用相同的变量名,则需要提供更多范围:
switch(foo)
{
case 1:
{
MyObject bar;
// ...
break;
}
case 2:
{
MyObject bar;
// ...
break;
}
}
答案 1 :(得分:1)
由于这个问题和其他问题,我建议避免使用switch-case。您可以通过额外的花括号来允许变量定义,但这看起来很混乱并导致两个级别的缩进。其他问题是你只能使用整数/枚举值来表示break
语句不能用来断开交换机外的循环。忘记中断也是编译器无法检测到的一个非常常见的编程错误(因为它仍然是有效代码),并且导致难以调试错误。
就个人而言,我只使用带有枚举值的switch-case,甚至从不使用默认标签。如果不能处理枚举的所有可能值,这样可以让我收到编译警告(来自GCC)。
if-elses没有错。
答案 2 :(得分:0)
switch (choice)
{
case 1:
{
cout<<"\nBike object created********"<<endl;
Bike B1(2,4,50);
V=&B1;
V->Display_Details();
V->CallToll(persons);
break;
}
case 2:
{
cout<<"\n CAR object created********"<<endl;
Car C1(4,8,50);
V=&C1;
V->Display_Details();
V->CallToll(persons);
break;
}
default:
cout<<"You have entered an invalid choice...........Please Enter valid choice........"<<endl;
}