尝试从向量返回对象时收到“没有可行的重载operator []错误”

时间:2019-04-21 15:43:26

标签: c++

我正在开发一个小型的基于文本的游戏,目前正试图构建一个传递字符串的函数,该字符串是武器的名称,并从矢量返回该武器对象。以下是相关功能:

//define weapons like this
Weapon* flimsyDagger = Weapon* (3, "Flimsy Dagger", 17, 4.0);

//store weapons in this vector, which stores all of the stats of each weapon
void Weapon::fillWeaponVector() {
    allWeapons.push_back(flimsyDagger);
}

//use this function to return the weapon by passing its name as it was defined (e.g. 'flimsyDagger') and return all stats
Weapon* Weapon::getWeaponStats(std::string weaponName) {
    return allWeapons[weaponName];
}

错误发生在return allWeapons[weaponName];行的第一个方括号中。我到处都在寻找解决方案,但找不到适合我情况的任何东西。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您声称您正在使用向量,但是您发布的代码中没有任何内容表明allWeapons实际上是向量。

如果是,则无法使用文本字符串为向量建立索引-向量的索引必须为整数。正如@Eljay建议的那样,使用std::map可能更合适。这使您可以使用非数字键查找存储的对象。