С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 18.03.2011
Сообщений: 56
1

Пропадают данные string

14.12.2021, 13:49. Показов 772. Ответов 6

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста, почему пропадают данные из моего враппера и можно ли это исправить.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
 
using std::string;
class Pwrap {
public:
    const std::pair<string, int> & para;
    Pwrap(const std::pair<string, int> &p) :para(p) {}
};
 
int main(int argc, char* argv[]) {
 
    string str = "zero";
    auto pair1 = std::make_pair("zero", 0);   //(1)
    auto pair2 = std::make_pair(str, 0);         //(2)
    auto pairInt = std::make_pair(0, 1);
    Pwrap wrp1(pair1);
    Pwrap wrp2(pair2);
    
    return 0;
}
В первом случае (1) wrp1 имеет пустую string пары, в случае (2) wrp2 имеет нормальную пару.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2021, 13:49
Ответы с готовыми решениями:

Не могу понять, куда пропадают данные типа string в односвязном списке экземпляров класса
Здравствуйте,форумчане. Изучаю С++ и написал динамическую структуру типа односвязный список, где...

Есть ли аналог Map <String,String> чтобы передавать его как указатель на данные?
Добрый день, подскажите, есть ли аналог Map &lt;String,String&gt; чтобы передавать его как указатель на...

При закрытии дочерней формы с нее пропадают данные
Вопрос прост, есть главная форма на которой вызывается несколько дочерних(могут и одновременно), на...

Пропадают данные
Теряются (периодически) данные на SOL SERVER примерно 5-15 записей в начале и в конце.В ручную уже...

Пропадают данные из HashMap
Задание такое: парсим данные и закидываем их в HashMap. При записи они есть, но при чтении их нет!...

6
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
14.12.2021, 14:06 2
Цитата Сообщение от snoogens Посмотреть сообщение
почему пропадают данные
Потому что ссылка на временный объект получается.
Объект помер, ссылка осталась. Дальше UB.
В принципе данные могли и не пропасть, но ошибка все равно была бы, хоть и в спрятанном виде.
0
1 / 1 / 0
Регистрация: 18.03.2011
Сообщений: 56
14.12.2021, 14:12  [ТС] 3
DrOffset, так в том то и дело, что объект то не помирает, pair1 как существовал так и продолжает существовать, содержит в себе "zero", 0.
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
14.12.2021, 14:22 4
Лучший ответ Сообщение было отмечено snoogens как решение

Решение

snoogens, так речь не о pair1.

pair1 у вас какого типа? Правильно, std::pair<char const*, int>.
А Pwrap какой тип ждет? Правильно, std::pair<std::string, int>.
Как сделать из объекта типа std::pair<char const*, int> объект типа std::pair<std::string, int>? Правильно, с помощью преобразования типа. Результатом выражения преобразования будет временный объект, который помрет в конце выражения.
Т.е. в строке 16.

Дальше wrp1 содержит "битую" ссылку на этот временный объект.
1
1 / 1 / 0
Регистрация: 18.03.2011
Сообщений: 56
14.12.2021, 14:23  [ТС] 5
и с int же ничего не происходит, он сохраняется.
0
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
14.12.2021, 14:25 6
Цитата Сообщение от snoogens Посмотреть сообщение
и с int же ничего не происходит, он сохраняется.
Да, только не c int, а с string, потому что в этом случае никакого временного объекта нет. У вас pair2 один в один соотносится с тем, что ждет wrp2.
0
1 / 1 / 0
Регистрация: 18.03.2011
Сообщений: 56
14.12.2021, 14:27  [ТС] 7
DrOffset, пасибо, разобрался.
0
14.12.2021, 14:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.12.2021, 14:27
Помогаю со студенческими работами здесь

Пропадают данные из представлений
В представлении по форме исчезают данные, хотя в другом представлении они есть, но тут начинается...

пропадают данные из View
в дизайнере меняю вью, поля, к примеру, там же делаю обновить, данные исчезают, чтобы их увидеть,...

Пропадают данные из DBGrid
После предварительного просмотра или печати исчезают данные из dbgrid. В чем проблема? Как это...

Пропадают данные в переменых
Доброго времени суток. У меня вот такой код: Перем РезультатПоискаП1 Экспорт; Перем...

Почему пропадают данные
Есть программка под спойлером, переменная $_ce в условии не выврдится &lt;?php session_start(); if...

Пропадают данные в POST
Вообще-то всё нормально, данные нормально подгружаются через пост и заносятся в бд, но лишь стоит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru