【发布时间】:2015-09-11 09:49:35
【问题描述】:
我遇到的问题是声明类型列表的迭代器 列表 我觉得有一些非常明显的事情正在发生。谷歌不是我的朋友 今天。
参见下面的 for 循环,假设使用命名空间 std
for (list< pair<double, int> >::iterator i = terms.begin(); i != terms.end(); ++i)
{
yval += pow(di, i->second) * i->first;
}
这里的错误是一堵巨大的错误墙,可以随意阅读
te<class _CharT, class _Traits, class _Alloc> bool
std::operator==(const std::basic_string
<_CharT, _Traits, _Alloc>&, const _CharT*)
e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/bits/basic_string.h:2516:5:
note: temp
late argument deduction/substitution failed:
polynomial.cpp:40:44: note: 'std::list<std::pair<double, int> >::iterator {aka std::_Lis
t_iterator<std::pair<double, int> >}' is not derived from 'const std::basic_string<_CharT,
_Traits, _Alloc>'
In file included from e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/bits/locale_facets
.h:50:0,
from e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/bits/basic_ios.h:3
9,
from e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/ios:45,
from e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/ostream:40,
from e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/iostream:40,
from polynomial.h:7,
from polynomial.cpp:1:
e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/bits/streambuf_iterator.h:206:5:
note: t
emplate<class _CharT, class _Traits> bool std::operator==(const std::istreambuf_iterator<_
CharT, _Traits>&, const std::istreambuf_iterator<_CharT, _Traits>&)
e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/bits/streambuf_iterator.h:206:5:
note:
template argument deduction/substitution failed:
polynomial.cpp:40:44: note: 'std::list<std::pair<double, int> >::iterator {aka std::_Lis
t_iterator<std::pair<double, int> >}' is not derived from 'const std::istreambuf_iterator<
_CharT, _Traits>'
In file included from e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/mingw32/bits/c++al
locator.h:34:0,
from e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/bits/allocator.h:4
8,
from e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/deque:62,
from e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/queue:61,
from polynomial.h:5,
from polynomial.cpp:1:
e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/ext/new_allocator.h:129:5:
note: templat
e<class _Tp> bool __gnu_cxx::operator==(const __gnu_cxx::new_allocator<_Tp>&, const __gnu_
cxx::new_allocator<_Tp>&)
e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/ext/new_allocator.h:129:5:
note: templ
ate argument deduction/substitution failed:
polynomial.cpp:40:44: note: 'std::list<std::pair<double, int> >::iterator {aka std::_Lis
t_iterator<std::pair<double, int> >}' is not derived from 'const __gnu_cxx::new_allocator<
_Tp>'
In file included from e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/bits/stl_algobase.
h:68:0,
from e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/deque:61,
from e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/queue:61,
from polynomial.h:5,
from polynomial.cpp:1:
e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/bits/stl_iterator.h:813:5:
note: templat
e<class _Iterator, class _Container> bool __gnu_cxx::operator==(const __gnu_cxx::__normal_
iterator<_Iterator, _Container>&, const __gnu_cxx::__normal_iterator<_Iterator, _Container
>&)
e:\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/bits/stl_iterator.h:813:5:
note: templ
ate argument deduction/substitution failed:
【问题讨论】:
-
terms的声明是什么? -
是类的私有成员,模式相同
list< pair<double, int> > terms; -
Can't reproduce,请发帖mvce。也许
terms被屏蔽了?您是否尝试过使用auto而不是显式指定迭代器类型? -
你的代码是否在 const 成员函数中?
-
如果是,使用列表 >::const_iterator