C++ switch语句中对象的作用域
我试图做一个程序,你有一个菜单留下评论,查看评论,并创建一个帐户。我使菜单成为一个开关语句。在大多数情况下,我需要一个user对象,但它是在case1中创建的,它的作用域仅在case1中。我使用了一个用户指针,所以我可以在其他情况下使用它。我有switch语句,所以它会一直运行,直到用户退出。当我在case1中添加指针并运行程序时,它崩溃了。我的问题是,有没有其他方法可以让案例1中创建的用户对象对所有其他案例都可以访问C++ switch语句中对象的作用域,c++,pointers,object,switch-statement,C++,Pointers,Object,Switch Statement,我试图做一个程序,你有一个菜单留下评论,查看评论,并创建一个帐户。我使菜单成为一个开关语句。在大多数情况下,我需要一个user对象,但它是在case1中创建的,它的作用域仅在case1中。我使用了一个用户指针,所以我可以在其他情况下使用它。我有switch语句,所以它会一直运行,直到用户退出。当我在case1中添加指针并运行程序时,它崩溃了。我的问题是,有没有其他方法可以让案例1中创建的用户对象对所有其他案例都可以访问 User *uPointr = NULL; int: s
User *uPointr = NULL;
int: selec;
cout << " enter a selection: " ;
do{
switch(selec)
{
case 1: // creates a user
{
string name;
cout << " Enter you name ": ;
cin >> name;
User newUser(); // making an new user
addUsertoList(newUser);
*uPointer = newUser();
break;
}
case 2:
{
string message;
count << " Enter message:;
cin >> message;
uPointer.addMessage(message);
break;
}
case 3:
{
UPointer->disPlayMessage();
break;
}
case 4:
{
exit(0);
}
}
} While(1);
相反,您可以使用std::list,其中包含指向交换机外部用户对象的指针。然后,您可以在案例1中插入新用户,就像您正在执行addUsertoListnewUser一样,在案例2、3中修改该用户……等等。此代码有很多错误。首先,使用selec uninitialized,这是一种未定义的行为。selec的声明是错误的这不是Pascal。。。。用户newUser;不创建用户对象,它声明一个返回用户的函数*uPointer=newUser将尝试调用该不存在的函数,并将其返回值存储在uPointer指向的对象中,该对象是一个空指针,再次调用UB。User newUser;//创建新用户否。@ParamagneticCroissant这应该是您向用户询问名称的答案,但您对名称不做任何处理。向用户询问不会被处理的信息是不好的。另外,如果要使用指针,请正确使用它们。“.”运算符用于实例,“->”运算符用于指针。大多数情况下,您不需要为新操作符分配内存。