2014-03-28 72 views
0

不知何故,對於我的生活,我無法理解參考。我有這個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參數類型也不正確,以及...

+0

'queue.push(* item)'? – 0x499602D2

+0

'* item'將不起作用,因爲我的隊列在模板處理後的'push'期待'my_class *&'(我沒有包含'const's,因爲它們的排序總是令我困惑)。 '* item'會使它成爲'my_class&'。 – atanamir

+0

是的,我的壞。但是不要使參數類型爲'const my_class *',而是將函數本身的參數更改爲'my_class *' – 0x499602D2

回答

0

我想我明白了 - 我的隊列需要是const my_class*以匹配我的dispatch參數類型。讓我知道是否有更好的方法....

+0

或者將答案重構爲更加「解答」的形式,或者使用其他數據和想法編輯您的問題。 – gdoron