Получение объекта через sender

270
04 апреля 2018, 10:54

Если я создаю сокет

QTcpSocket *_pSocket = new QTcpSocket(this);
connect( _pSocket, SIGNAL(readyRead()), this, SLOT(readTcpData()));

а потом используz его в коде

void readTcpData()
{
    QTcpSocket* _pSocket = (QTcpSocket*)sender();
    QByteArray recieved = _pSocket->readAll();
    emit readTCPdata_signal(recieved, _pSocket->peerAddress().toIPv4Address() );
    delete _pSocket;
}

удалится ли сокет который был создан первоначально?

Answer 1

В Вашем примере, _pSocket в первом и втором случае - это один и тот же объект. Поэтому, в конце функции Вы удалите оба. И при следующем приходе сигнала на чтение будет UB (так как там висящий указатель).

FYI: Строка QTcpSocket* _pSocket = (QTcpSocket*)sender(); не создает нового объекта и не увеличивает никаких счетчиков ссылок.

READ ALSO
SimpleTable - шаблонный класс для создания таблиц в консоли

SimpleTable - шаблонный класс для создания таблиц в консоли

Я тут сделал небольшой проект на С++, и хотел поделиться с вами, вдруг вам понадобится создавать таблицу в консоли

203
Установка OGRE 3D

Установка OGRE 3D

Добрый деньПомогите установить графический движок OGRE под Visual Studio 2017 или (в идеале) под CLion 2017

212
Выделение предложения с обеих сторон в файле

Выделение предложения с обеих сторон в файле

Есть файлВ нём нужно посчитать количество повествовательных предложений и выделить 3 повествовательное предложение с обеих сторон

220