我正在尝试编写一个Entity Manager类,它将存储和维护Entity类型的共享指针向量:
std::vector<std::shared_ptr<Entity>> mEntities;
矢量被填充如下:
mEntities.resize(maxEntities, std::make_shared<Entity>());
我已经在类中写了一个成员函数,它返回一个实体共享指针:
std::shared_ptr<Entity> EntityManager::getEntity()
{
for (std::size_t i = 0; i < mEntities.size(); ++i)
{
if (mEntities[i]!=nullptr)
{
mEntities[i] = std::make_shared<Entity>();
}
if (!mEntities[i]->Alive() && !mEntities[i]->InUse())
{
mEntities[i]->revive();
mEntities[i]->setID((unsigned int)i);
mEntities[i]->activate();
return mEntities[i];
}
}
return nullptr;
}
这会抛出编译器错误:
Error 1 error LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in function "public: class std::shared_ptr<class Entity> & __thiscall std::vector<class std::shared_ptr<class Entity>,class std::allocator<class std::shared_ptr<class Entity> > >::operator[](unsigned int)" (??A?$vector@V?$shared_ptr@VEntity@@@std@@V?$allocator@V?$shared_ptr@VEntity@@@std@@@2@@std@@QAEAAV?$shared_ptr@VEntity@@@1@I@Z)
这似乎表明operator[]
以某种方式失败,除非我误读了错误消息。
补充:我应该指出实体类型上的所有方法都已实现,所以我知道它与类本身无关。