我收到错误:
error C2682: cannot use 'dynamic_cast' to convert from 'std::_List_iterator<_Mylist>' to 'UserBean *'
执行时:
list<UserBean> * userBeans = getUserBeans();
for(list<UserBean>::iterator i = userBeans->begin(); i != userBeans->end(); i++)
UserBean * newUser = dynamic_cast<UserBean*>(i);
我做错了什么,还是不能将迭代器项转换为对象?
最佳答案
有时迭代器被实现为指向容器项的原始指针,但更多时候,它们根本不是指针,所以不要那样对待它们。 正确的 访问迭代器引用的项目的方法是取消引用迭代器,例如:
UserBean &newUser = *i;
或者:
UserBean *newUser = &(*i);
迭代器通常会覆盖
->
运算符,以便您可以访问引用项的成员,以防迭代器引用实际对象实例(您的实例)而不是指向对象实例的指针,例如:i->SomeMemberHere
关于c++ - 无法将列表迭代器强制转换为对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16072486/