我有以下代码段 -
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的指针变量,我不能使用直接赋值或静态强制转换。所以使用dynamic_cast但似乎也没有用。
如果我想让它工作,我有什么选择。
答案 0 :(得分:3)
您可以使用
cMyClass *cls = &*imyCls;
*imyCls
是对vector
中对象的引用; &*imyCls
就是那个地址。
答案 1 :(得分:1)
首先,您尝试从引用中获取指针,您必须在迭代器解除引用之前添加&
,如下所示:&*myCls
。此外,由于您使用的是const_iterator,因此只能获取const指针。将imyCls
更改为非const迭代器,或将强制转换为const指针版本。
cMyClass const *cls = dynamic_cast<cMyClass const*>(&*imyCls);