C++ 在超出范围时使用对象?

C++ 在超出范围时使用对象?,c++,C++,我正在处理一项学校作业,要求根据选项菜单从用户字符串输入创建一个char LinkedList: 输入新字符串并在LinkedList类中存储为字符的链表。 从LinkedList获取当前长度。 查找此链接列表中字符的索引。 将另一个LinkedList附加到此LinkedList。 我一切都很好,但现在我被困在菜单选项部分。 假设我选择选项1来输入字符串,然后我决定在案例2和案例3中使用该对象来获取大小并查找索引。这将不起作用,因为对象在超出范围时将被销毁。我可以用什么合适的方法来实现这一点吗

我正在处理一项学校作业,要求根据选项菜单从用户字符串输入创建一个char LinkedList:

输入新字符串并在LinkedList类中存储为字符的链表。 从LinkedList获取当前长度。 查找此链接列表中字符的索引。 将另一个LinkedList附加到此LinkedList。 我一切都很好,但现在我被困在菜单选项部分。 假设我选择选项1来输入字符串,然后我决定在案例2和案例3中使用该对象来获取大小并查找索引。这将不起作用,因为对象在超出范围时将被销毁。我可以用什么合适的方法来实现这一点吗

下面是简单的代码


在switch语句之外声明对象

 LinkedList ls1(getInput());
 switch(option){
    case 1:
       ls1.printList();
       break;  
   case 2:
      cout << "Size of LinkedList: " <<ls1.getSize() << endl; 
      break;
   default:
      break;
 }

尝试在switch语句之外启动该对象,然后可以在任何switch语句中使用该对象

例如:

ClassName ObjectName(getInput());
 switch(option){
   case 1: ObjectName.printList();
                 break;  
   case 2: cout << "Size of LinkedList: " <<ObjectName.getSize() << endl; 
                 break;
   default: break;
 }

如果要扩展对象的作用域,可以在更高的作用域中声明它。您可能有一个while循环请求输入,然后打开该输入?如果希望LinkedList在循环的连续迭代中幸存下来,则需要在循环开始之前声明它

LinkedList ls1; // required default constructor
int option = 3;
do
{
    std::cout << "Enter 1 to create new list. 2 to print current list. 3 to quit: ";
    std::cin >> option;
    switch(option)
    {
    case 1:
        ls1 = getInput(); // requires conversion from getInput()'s return type and copy (or preferably move) assignment operators
        ls1.printList();
        break;
    case 2:
        std::cout << "Size of LinkedList: " <<ls1.getSize() << std::endl;
        break;
    }
} while(option != 3);

您需要一些地方来存储当前的链接列表,但您还没有创建任何这样的地方。如果选项为2,则您创建的LinkedList不存在。OP不值得所有的否决票。是的,这是关于家庭作业的问题,但问题是精确的,并且有一个正确、直截了当的答案。@JeffreysupportsMonica我投了赞成票。投反对票是因为使用了一个单位化变量的错误做法,这会产生未定义的行为。如果用户无法识别输入提示,程序将产生意外结果。
LinkedList ls1; // required default constructor
int option = 3;
do
{
    std::cout << "Enter 1 to create new list. 2 to print current list. 3 to quit: ";
    std::cin >> option;
    switch(option)
    {
    case 1:
        ls1 = getInput(); // requires conversion from getInput()'s return type and copy (or preferably move) assignment operators
        ls1.printList();
        break;
    case 2:
        std::cout << "Size of LinkedList: " <<ls1.getSize() << std::endl;
        break;
    }
} while(option != 3);