2017-05-08 6 views
-2

제 경우에는 std::list<Ort*>이 있습니다. 여기에서 Ort는 사용자 정의 클래스이고 을 작성했으며이 목록에는 Ort- 개체에 대한 포인터가 들어 있습니다.포인터에 대한 과부하 push_back()

내가 직접 작성하여 객체를 밀어 수 있도록 +=를 사용하여 list.push_back() 기능에 과부하가 좋아 : 나는 시도 무엇

List<Ort*> Orte; 
Ort* o = new Ort(..); 

Orte+=o; 

은이 :

void Navi::operator+=(const Ort& b) 
{ 
    *this->Orte.push_back(b); 
} 

나비는 보유 클래스 목록 'Orte'.

하지만 올바른 매개 변수 오버로드를 찾을 수 없다는 것을 알 수 있습니다. 일컬어 매개 변수가 잘못되었습니다.

누군가 내가 잘못하고있는 것을 지적 할 수 있습니까?

+6

'Orte'가 'List '일 때 왜 'Navi'를 오버로 잉합니까? – NathanOliver

+0

편집 됨 - Navi는 속성이있는 클래스입니다. List Orte; –

+7

'const Ort &'와'Ort *'는 정말로 다른 타입입니다. – Jarod42

답변

0

문제는 포인터의 구조에 있습니다. 여기 Question about const pointer in C++?

보면 당신은 b를 오트 *의 CONST에 CONST 오트 & B에서 인수를 변경하면 문제를 해결해야한다고 볼 수 있습니다. (당신이 const 포인터를 List로 푸시하고자하므로).