在Qt工程我有一个方法Qt的缺失指针方法
void ProtocolHandler::interpretData(uint8_t packet_id){
PacketClass *packet = new RSP2StatusPacket(_packet_buf);
emit packetReceived(packet);
}
其中I声明类型PacketClass的目的数据包,然后我发射信号
packetReceived (PacketClass*)
在另一类我有以下插槽:
void ReceiverCommands::processReceivedPacket(PacketClass* pkt)
{
status_packet *payload = pkt->getPayload();
delete pkt
}
在插槽方法中删除较新的PacketClass *包是否正确? 有时我的程序崩溃,所以删除信号/槽中传递的指针的最佳方法是什么(我想我必须删除pkt,因为我在“interpretData”方法中实例化了一个新数据包)。
你不应该这样做,如果有连接到信号多个时隙(或甚至一个双连接) –
在PacketClass的情况下,不从继承自QObject,我会使用的包装尝试一些方法类和QSharedPointer,当所有插槽完成处理时确保删除对象。在另一种情况下,Merlin069的答案是正确的。 – Jairo
@Jairo:你会需要一个包装类吗? –