Я не знаю, почему это не работает должным образом, когда я удаляю, назначая новую стратегию базовому указателю, это происходит сбой в любом случае.
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;