我正在开发一个小型的基于文本的游戏,目前正试图构建一个传递字符串的函数,该字符串是武器的名称,并从矢量返回该武器对象。以下是相关功能:
//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];
行的第一个方括号中。我到处都在寻找解决方案,但找不到适合我情况的任何东西。有什么建议吗?
答案 0 :(得分:1)
您声称您正在使用向量,但是您发布的代码中没有任何内容表明allWeapons
实际上是向量。
如果是,则无法使用文本字符串为向量建立索引-向量的索引必须为整数。正如@Eljay建议的那样,使用std::map
可能更合适。这使您可以使用非数字键查找存储的对象。