2016-09-23 162 views
-3

爲什麼這不能工作? toBeEvolved是std::vector,.getIndividual返回元素爲什麼指向返回引用的指針不可能?

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

Individual* in2 = tournamentSelection(0); 

編譯時錯誤:從「個人」沒有可行的轉化爲「個人*」

+0

引用不是指針。你想做什麼? – nneonneo

+0

我試圖通過這個函數設置一個指向元素的指針。 – Vincent

+0

我認爲引用通常作爲隱式指針實現的事實令OP感到困惑。 –

回答

1

你需要採取參考的地址,以便將其轉換爲一個指針。即使您可能知道引用由編譯器在「幕後」處理爲指針,但在語言中沒有明確要求將引用實現爲指針變量,並且您仍然需要使用明確的&運算符告訴它你想要的地址作爲指針。所以:

Individual* in2 = &tournamentSelection(0); 

其他海報已經進入了更加深入的指針和引用之間的distinction

相關問題