不知何故,對於我的生活,我無法理解參考。我有這個queue
類的方法:參考文獻和指針以及用const傳遞的參數
void push(const T& item);
現在我試圖把東西放入隊列(這是一個很做作的例子):
class my_class { };
void dispatch(const my_class* item)
{
my_queue<my_class*> queue;
queue.push(item);
}
// ...
auto x = new my_class;
dispatch(x);
我得到來自const my_class*
轉換錯誤到my_class *const&
。我試過&item
,鑄造item
,但沒有一個讓編譯器感到高興。什麼是正確的方法來做到這一點?我的queue
應該是my_class
而不是my_class*
?另一種可能性是,我的push
參數類型也不正確,以及...
'queue.push(* item)'? – 0x499602D2
'* item'將不起作用,因爲我的隊列在模板處理後的'push'期待'my_class *&'(我沒有包含'const's,因爲它們的排序總是令我困惑)。 '* item'會使它成爲'my_class&'。 – atanamir
是的,我的壞。但是不要使參數類型爲'const my_class *',而是將函數本身的參數更改爲'my_class *' – 0x499602D2