在我的代碼,我調用這樣的功能:錯誤:左值要求爲一元「和」操作數
Simulator::Schedule (Seconds(seconds),
&HelloProtocol::sendScheduledInterest(seconds), this, seconds);
這裏是上述函數的簽名:
/**
* @param time the relative expiration time of the event.
* @param mem_ptr member method pointer to invoke
* @param obj the object on which to invoke the member method
* @param a1 the first argument to pass to the invoked method
* @returns an id for the scheduled event.
*/
template <typename MEM, typename OBJ, typename T1>
static EventId Schedule (Time const &time, MEM mem_ptr, OBJ obj, T1 a1);
而功能sendScheduledInterest的定義()是:
void
HelloProtocol::sendScheduledInterest(uint32_t seconds)
{
//...
}
我收到以下編譯錯誤:
hello-protocol.cpp: In member function ‘void ns3::nlsr::HelloProtocol::scheduleInterest(uint32_t)’:
hello-protocol.cpp:58:60: error: lvalue required as unary ‘&’ operand
如果我在函數調用之前刪除&
,它提供了以下錯誤,而不是:
hello-protocol.cpp: In member function ‘void ns3::nlsr::HelloProtocol::scheduleInterest(uint32_t)’:
hello-protocol.cpp:58:75: error: invalid use of void expression
'HelloProtocol'被定義爲'Void',但是你正在嘗試把它的地址。 –
當我刪除操作員的地址時,會給出不同的錯誤。這是爲什麼? – AnilJ
刪除'&',然後將'void'作爲參數傳遞給函數,這沒有任何意義。它本質上是一樣的錯誤,但編譯器在過程的另一個點上發現它。 –