У меня есть класс с именем IAckHandler
class IAckHandler {
public:
virtual ~IAckHandler();
virtual void handleAck(long messageType, bool ackrcvd, uint8_t ackByte) = 0;
private:
};
Предполагаемое использование для наследования других классов, так что это в основном класс "interface".
Я использую очереди сообщений для отправки запросов в поток опроса (uart comm) и хочу передать IAckHandler в сообщение очереди сообщений.
Структура выглядит так:
struct reqmsg
{
long int mtype;
void (*reqHandler)(MasterRadioComm*, uint8_t*);
IAckHandler* ackHandler;
unsigned char mtext[NUM_INDICES];
};
Вот функция отправки в очередь сообщений
void Uartcom::req_doSomething(IAckHandler& ackHandler)
{
struct reqmsg req;
if(ackHandler == NULL) req.ackHandler = this;
else req.ackHandler = ackHandler;
msgsnd(m_msgQueueKey, &req, sizeof(struct reqmsg) - sizeof(long), 0);
}
Но когда я передаю ссылку на IAckHandler, я получаю cannot convert ‘IAckHandler’ to ‘IAckHandler*’ in assignment.
Могу ли я вызвать req_doSomething (this) из другого класса, который наследует IAckHandler?