C++ 动态转换到向量迭代器

C++ 动态转换到向量迭代器,c++,casting,C++,Casting,我有下面的片段- std::vector<cMyClass> myCls = GetClassValues(); std::vector<cMyClass>::const_iterator imyCls; for( imyCls = myCLs.begin(); imyCls != myCls.end(); ++imyCls) { cMyClass *cls = dynamic_cast<cMyClass*>(*imyCls);//C2682 } 在

我有下面的片段-

std::vector<cMyClass> myCls = GetClassValues();
std::vector<cMyClass>::const_iterator imyCls;
for( imyCls = myCLs.begin(); imyCls != myCls.end(); ++imyCls)
{
  cMyClass *cls = dynamic_cast<cMyClass*>(*imyCls);//C2682


}
在for循环中,我希望指针变量为cMyClass,我不能使用直接赋值或静态强制转换。因此,使用动态_cast,但这似乎也不起作用

如果我想让它工作,我有什么选择。

您可以使用

cMyClass *cls = &*imyCls;
*imyCls是对向量中对象的引用&*imyCls是它的地址。

您可以使用

cMyClass *cls = &*imyCls;

*imyCls是对向量中对象的引用&*imyCls是它的地址。

首先,您试图从引用中获取指针,您必须在迭代器取消引用之前添加&如下所示:&*myCls。此外,由于您使用的是常量迭代器,因此只能获取常量指针。将imyCls更改为非常量迭代器,或将强制转换更改为常量指针版本

cMyClass const *cls = dynamic_cast<cMyClass const*>(&*imyCls);

首先,您试图从引用中获取指针,必须在迭代器取消引用之前添加:&*myCls。此外,由于您使用的是常量迭代器,因此只能获取常量指针。将imyCls更改为非常量迭代器,或将强制转换更改为常量指针版本

cMyClass const *cls = dynamic_cast<cMyClass const*>(&*imyCls);