我正在尝试将矢量迭代器转换为下面函数中的对象指针:
std::vector<some_object> some_objects;
some_object* getsome(int index)
{
if( index < ledges.size() && index >= 0)
{
return &(*some_objects[index]);
}
return NULL;
}
然而,编译器抛出一个错误:“不匹配'运算符*。”处理这个问题的正确方法是什么?
答案 0 :(得分:2)
问题在于向量包含some_object
类型但不包含some_object *
的对象。您正试图取消引用非指针类型,编译器正在抱怨它。试试 -
return &(some_objects[index]);
或
return &(some_objects.at(index));
答案 1 :(得分:1)
[]
向量的some_objects
运算符的返回类型为some_object&
(引用),因此要获取指针,只需使用&
运算符直接就此:
return &some_objects[index];
答案 2 :(得分:0)
some_object* getsome( std::vector<some_object>::size_type index)
{
return ( index < some_objects.size() ? &some_objects[index] : NULL );
}