2016-09-23 2 views
-3

왜 작동하지 않습니까? toBeEvolved은 요소반환 된 참조에 대한 포인터를 사용할 수없는 이유는 무엇입니까?

Individual& EvolutionaryAlgorithm::tournamentSelection(unsigned int i) 
{ 
    return toBeEvolved.getIndividual(i); 
} 

Individual* in2 = tournamentSelection(0); 
을 반환 .getIndividual std::vector,입니다

컴파일 시간 오류 : 당신은에 변환하기 위해 참조의 주소를 취할 필요 '개인 *'

+0

참조는 포인터가 아닙니다. 너 뭐하려고? – nneonneo

+0

이 함수를 통해 요소에 대한 포인터를 설정하려고합니다. – Vincent

+0

암시 적 포인터로 참조가 종종 구현된다는 사실은 OP를 혼란스럽게합니다. –

답변

1

에 '개인'에서 아무 가능한 변환하지 포인터. 컴파일러가 참조를 포인터로 취급한다는 것을 알 수있을지라도 참조가 포인터 변수로 구현된다는 명시적인 요구 사항은 없으며 명시 적으로 & 연산자를 사용해야합니다. 주소를 포인터로 쓰라고 말하십시오. 그래서 :

Individual* in2 = &tournamentSelection(0); 

다른 포스터는 포인터와 참조 사이의 distinction에 훨씬 더 깊이로 갔다.

관련 문제