错误程序:
#include <iostream> #include <vector> using namespace std; struct A { int x; A(int y) {x = y;} }; int main() { A a(11217); vector<A> V; V.push_back(a); vector<A>::iterator it = V.begin(); A *p = it; return 0; }
编译报错:
error: cannot convert 'std::vector<A>::iterator {aka __gnu_cxx::__normal_iterator<A*, std::vector<A> >}' to 'A*' in initialization
错因:
it是vector<A>::iterator型的,而指针p是struct A型的,两者不能直接转换。
解决方法:
将A *p = it;改成A *p = &(*it);即可。*it是struct A型的。