어떻게 든, 내 인생에서 참조를 이해할 수 없습니다.참조 및 포인터 및 매개 변수 전달 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
시도했지만 그들 중 누구도 컴파일러를 행복하게합니다. 이 작업을 수행하는 올바른 방법은 무엇입니까? 내 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