std :: vector:如何在向量c ++中返回指向对象的指针

时间:2014-03-03 22:34:40

标签: c++ arrays stdvector

我正在尝试将矢量迭代器转换为下面函数中的对象指针:

std::vector<some_object> some_objects;

some_object* getsome(int index)
{
    if( index < ledges.size() && index >= 0)
    {
        return &(*some_objects[index]);
    }
    return NULL;
}

然而,编译器抛出一个错误:“不匹配'运算符*。”处理这个问题的正确方法是什么?

3 个答案:

答案 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 );
}