convert 'std::vector<>::iterator {aka __gnu_cxx::__normal_iterator<*, std::vector<> >}' to '*' in in

来源:互联网 发布:mysql 大于小于转义 编辑:程序博客网 时间:2024/06/05 23:54

错误程序:

#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型的。

原创粉丝点击