我有
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);
}
编译没有问题
有人可以帮我理解为什么吗?
TIA,雅尼斯
附言。我正在使用带有 -std=c++11 的 gcc 4.8