C++ switch语句中对象的作用域

C++ switch语句中对象的作用域,c++,pointers,object,switch-statement,C++,Pointers,Object,Switch Statement,我试图做一个程序,你有一个菜单留下评论,查看评论,并创建一个帐户。我使菜单成为一个开关语句。在大多数情况下,我需要一个user对象,但它是在case1中创建的,它的作用域仅在case1中。我使用了一个用户指针,所以我可以在其他情况下使用它。我有switch语句,所以它会一直运行,直到用户退出。当我在case1中添加指针并运行程序时,它崩溃了。我的问题是,有没有其他方法可以让案例1中创建的用户对象对所有其他案例都可以访问 User *uPointr = NULL; int: s

我试图做一个程序,你有一个菜单留下评论,查看评论,并创建一个帐户。我使菜单成为一个开关语句。在大多数情况下,我需要一个user对象,但它是在case1中创建的,它的作用域仅在case1中。我使用了一个用户指针,所以我可以在其他情况下使用它。我有switch语句,所以它会一直运行,直到用户退出。当我在case1中添加指针并运行程序时,它崩溃了。我的问题是,有没有其他方法可以让案例1中创建的用户对象对所有其他案例都可以访问

  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这应该是您向用户询问名称的答案,但您对名称不做任何处理。向用户询问不会被处理的信息是不好的。另外,如果要使用指针,请正确使用它们。“.”运算符用于实例,“->”运算符用于指针。大多数情况下,您不需要为新操作符分配内存。