c – ‘islower’的无效重载
发布时间:2020-12-16 10:35:40 所属栏目:百科 来源:网络整理
导读:我正在尝试用C开发BattleShip游戏,我差不多完成了.为此,我需要我的gameOver功能正常工作.所有的船都沉没了,我的游戏结束了.因此,我正在尝试计算我的字符串状态(来自Ship)中有多少个小写字符.当一半的字符是小写字母时,“船”被破坏,我准备使用我的gameOver功
我正在尝试用C开发BattleShip游戏,我差不多完成了.为此,我需要我的gameOver功能正常工作.所有的船都沉没了,我的游戏结束了.因此,我正在尝试计算我的字符串状态(来自Ship)中有多少个小写字符.当一半的字符是小写字母时,“船”被破坏,我准备使用我的gameOver功能.
但不知怎的,我的count_if不起作用,我不知道为什么. 干得好: #include <algorithm> bool Ship::isDestroyed() const{ //This counts those chars that satisfy islower: int lowercase = count_if (status.begin(),status.end(),islower); return ( lowercase <= (status.length/2) ) ? true : false; } bool Board::gameOver() { bool is_the_game_over = true; for(int i = 0 ; i < ships.size() ; i++){ if( ships[i].isDestroyed() == false ) { //There is at least one ship that is not destroyed. is_the_game_over = false ; break; } } return is_the_game_over; } 我究竟做错了什么? 解决方法
尝试按以下方式更改算法调用
int lowercase = count_if (status.begin(),::islower); ^^^ 允许编译器将标准C函数放在全局命名空间中. 否则使用lambda表达式作为例如 int lowercase = count_if (status.begin(),[]( char c ) return islower( c ); } ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |