LINUX.ORG.RU

Куда-то исчезает часть строки

 , ,


0

3

Есть класс:

class MessageThread {
public:
	thread *thr;
	vector<Message> messages;
};

Внутри функции void ThreadPool::add() вызываю

	MessageThread mthr;
	Message message;
	message.msg = msg;

	mthr.messages.push_back(message);

MessageThread mthr;
mthr.thr = new thread(&ThreadPool::func, this, std::ref(mthr));

Теперь в функции

void ThreadPool::func(MessageThread &mthr) {
	auto it = mthr.messages.begin();

	Message message = *it;
	cout << "message = " << message.msg << endl; 
}

где Message, это такой вот класс:

class Message {
public:
...
	string msg;
...
};

Так вот, часть строчки куда-то пропадает. Что это может быть такое?

Ответ на: комментарий от lberserq

да, всё есть...

class Message {
public:
	MyClass *ptr;
	string msg;
...
};

Да, кстати, вот такой, примерно, класс Message, если меняю ptr и msg местами, то ошибка возникает в ptr

sitev_ru
() автор топика
MessageThread mthr;
mthr.thr = new thread(&ThreadPool::func, this, std::ref(mthr));

Тут передаётся ссылка на объект на стеке? Если да, то этот стек живёт дольше потока?

xaizek ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.