Задать вопрос
  • List убирает string значения из класса, что делать?

    @dima20155
    you don't choose c++. It chooses you
    Во-первых, зачем вы приводите целый исходник сюда. Люди куда быстрее поймут суть, если вы сократите иерархию классов до демонстративного минимума.

    Во-вторых, во всех ваших case'ах
    Создается временный объект, затем вы зачем-то создаете ещё и временную переменную-указатель и сохраняете его адрес (зачем?). А после запихиваете все это в лист. Объект создается на стеке и при выходе за границы фигурных скобок вызывается деструктор и он перестает существовать, а все его содержимое будет перезаписано любой следующей переменной, размешенной на стеке. Вот код, о котором я говорю:
    case 1: {
          cout << endl << "Введите модель:";
          cin >> model;
          cout << endl << "Введите прозводителя:";
          cin >> producer;
          cout << endl << "Введите цену:";
          cin >> price;
          cout << endl << "Введите год выхода:";
          cin >> year;
          Appliances appliances{ model,producer,price,year };
          Appliances* pb = &appliances;
          catalog.push_back(pb);
          break;
        }


    Вот наглядный пример того что у вас получается.
    https://godbolt.org/z/bx5Wbo1bG

    Как исправить? Создавайте элемент в куче (new OhMyClass()). А лучше храните в std::list, например, std::unque_ptr
    Ответ написан
    2 комментария