Ошибка сегментации (сигнал SIGSEGV) при удалении, присвоение стратегий в шаблонной стратегии - PullRequest
0 голосов
/ 07 июля 2019

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

SendStrategy.h

#ifndef SENDSTRATEGY_H
#define SENDSTRATEGY_H

#include <QByteArray>
#include "QDebug"

class SendStrategy
{
public:
    virtual ~SendStrategy();
    virtual void sendDatagramData(QByteArray array) = 0;
};

#endif // SENDSTRATEGY_H

SendStrategy.cpp

#include "SendStrategy.h"

SendStrategy::~SendStrategy()
{

}

ConcreteStrategy.h

#ifndef SOCKETUDPSENDSTRATEGY_H
#define SOCKETUDPSENDSTRATEGY_H

#include <QObject>
#include <QUdpSocket>

#include <Utilities/SendStrategy.h>

class SocketUdpSendStrategy: public SendStrategy
{
private:
    QUdpSocket* socket;
    QHostAddress address;
public:
    SocketUdpSendStrategy();
    ~SocketUdpSendStrategy();
    void sendDatagramData(QByteArray array);
};

#endif // SOCKETUDPSENDSTRATEGY_H

Реализация SetStrategyMethod

void SendModel::setSendStrategy(SendStrategy* newStrategy)
{
    delete sendStrategy;
    sendStrategy = newStrategy;
}

Так, как я вызываю эту функцию

sendModel->setSendStrategy(new SocketUdpSendStrategy());

По умолчанию SendStrategy* sendStrategy = nullptr;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...