2013-10-24 42 views
1

我用在C列表++C++名單,從 'VALUE_TYPE'

std::list<Foo> foo; 
foo.push_back(bar); 
Foo *ret = foo.back(); 

當編譯我得到這個錯誤(在最後一行)沒有可行的轉換:

No viable conversion from 'value_type' (aka Foo) to 'Foo *' 

我怎樣才能解決這個?

感謝

回答

3

foo.back()會返回一個參考(即Foo &),但你試圖將其分配到一個指針。

爲了得到它的工作,你可以分配,而不是一個參考:

Foo &ret = foo.back(); 

或者獲得該項目的地址返回,並將其賦值給一個指針:

Foo *ret = &foo.back(); 
+0

參考!我覺得很愚蠢,在文檔中我是紅色的參考,但思想指針,也許我不應該在午夜寫代碼...謝謝... – Griffosx