如何在C++中从存储对象指针的vector容器中返回指定对象指针
错误原因
insumos.begin() 返回的是std::vector的迭代器对象,并非容器中存储的Insumo*类型元素,迭代器需要解引用后才能拿到指向的元素值,这是代码报错的核心原因。
解决方法
如果需要返回容器第一个元素的指针,建议先做判空处理避免容器为空时访问越界,正确实现如下:
Insumo *Local::getIn() { // 容器为空时返回空指针,避免越界 if (insumos.empty()) { return nullptr; } // 以下三种写法均可,效果一致 // return *insumos.begin(); // return insumos[0]; return insumos.front(); }
如果需要返回指定位置的元素指针,可以给方法增加索引参数,实现如下:
// 调用时传入需要获取的元素下标即可 Insumo *Local::getIn(size_t index) { // 索引超出范围时返回空指针 if (index >= insumos.size()) { return nullptr; } return insumos[index]; }
内容的提问来源于stack exchange,提问作者yuri fernandes
相关产品推荐
相关产品推荐

