私は持っている
class ListIterator
{
public:
ListIterator(std::list<double>& ls) :lst(ls) {lit = lst.begin();}
double *next(void);
private:
std::list<double> lst;
std::list<double>::iterator lit;
};
これ
double *ListIterator::next(void)
{
return((double *)&lit++);
}
エラーが生成されます: 一時アドレスの取得 [-fpermissive]
lit の & を取得してからインクリメントする必要があるため、 &lit++ が一時的なアドレスを取得する理由がわかりません。lit++ も一時的であってはならないことに注意してください。
これ
double *ListIterator::next(void)
{
double *res = &lit;
lit++;
return res;
}
エラーが生成されます: 初期化で 'std::list::iterator* {aka std::_List_iterator }' を 'double ' に変換できません
この間
double *ListIterator::next(void)
{
return((double *)&lit);
}
問題なくコンパイル
誰かが理由を理解するのを手伝ってもらえますか?
ティア、ヤニス
ps。-std=c++11 で gcc 4.8 を使用しています