2014-03-28 5 views
0

어떻게 든, 내 인생에서 참조를 이해할 수 없습니다.참조 및 포인터 및 매개 변수 전달 with 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*에서 변환하는 방법에 대한 오류를 얻을 나는 방법이 queue 클래스가 ~ my_class *const&. 난 item 캐스팅 &item 시도했지만 그들 중 누구도 컴파일러를 행복하게합니다. 이 작업을 수행하는 올바른 방법은 무엇입니까? 내 queuemy_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* 유형이어야합니다. 더 좋은 방법이 있으면 알려주세요 ....

+0

또는 "대답"양식에 대한 답을 리팩토링하거나 추가 데이터와 생각으로 질문을 편집하십시오. – gdoron