随机访问共享指针的向量

时间:2014-05-21 00:20:22

标签: c++ vector shared-ptr

我正在尝试编写一个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[]以某种方式失败,除非我误读了错误消息。

补充:我应该指出实体类型上的所有方法都已实现,所以我知道它与类本身无关。

0 个答案:

没有答案