我有一个虚拟类Animal,我想将Animal对象存储在向量中,并能够通过索引访问此向量中的任何Animal对象。
我声明了我的载体:std::vector <Animal*> anim;
可以使用以下方法添加到我的载体中:
void Shelter::add_animal(Animal& animal){
anim.push_back(&animal);
}
但是当我尝试使用以下方式访问动物时:
Animal& Shelter::animal(int index){
return anim[index];
}
我遇到错误。
shelter.cpp:18:28: error: invalid initialization of reference of type ‘Animal&’ from expression of type ‘__gnu_cxx::__alloc_traits<std::allocator<Animal*> >::value_type {aka Animal*}’
return _anim[index];
我想了解为什么我不能像过去访问矢量一样访问此矢量。谢谢!