错误程序:
#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型的。