void Player::removeWeapon(int location)
{
if (location<(int)weaponInCharacter.size()) {
weaponInCharacter.erase(weaponInCharacter.begin() + location);
}
}
我不确定以下一行:
if (location<(int)weaponInCharacter.size()) {
我可以看到它将int位置与向量weaponInCharacter中的位置进行比较,但是在这部分代码中int和vector之间的做法是什么:(int)weaponInCharacter.size())
答案 0 :(得分:2)
(int)
只是int
值的旧C样式广播。
这是一个非常常见的习语。 size
的返回值为size_t
,为无符号。当您尝试将此与已签名的int
进行比较时,许多编译器会发出警告。要消除警告,您只需将size_t
转换为int
,只要您知道size
返回的值适合int
,一切就会好起来的。 }。如果返回值不适合int
,那将是极少见的。