我有一個名爲IAckHandlerC++結構引用類型
class IAckHandler {
public:
virtual ~IAckHandler();
virtual void handleAck(long messageType, bool ackrcvd, uint8_t ackByte) = 0;
private:
};
的預期用途是用於其他類繼承的類,所以這基本上是一個「接口」級。
我使用消息隊列提交請求的輪詢線程(UART通訊),並希望在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.
我可以從另一個繼承IAckHandler的類調用req_doSomething(this)?
你不需要說'struct'在C++中。 'reqmsg req;'和'sizeof(reqmsg)'做得很好。 –
猜想我卡在C陸地。 – user623879