我尝试过与this类似的东西,但它对我不起作用。这是代码:
void Player::remove_card_from_hand(Card* the_card){
current_cards.erase(remove(current_cards.begin(), current_cards.end(), the_card), current_cards.end()); //Error occurs here at third argument "the_card"
}
其中vector<Card*>current_cards;
定义了指向Card对象的指针向量。
然而,我收到错误:
C2660:'删除':函数不带3个参数
我意识到将the_card作为指向对象的指针,可能就是它所谓的。 有人能告诉我这段代码有什么问题,或者向我展示一种尝试从对象矢量中删除对象的不同方法。
修改
简单的问题,缺少#include <algorithm>
。现在有效。
答案 0 :(得分:1)
错误消息足够清楚。您正在调用一个没有三个参数的函数。您似乎在全局命名空间中定义了一个名为remove的函数并将其调用。
包含标题<algorithm>
并使用限定名称进行算法std::remove
current_cards.erase( std::remove( current_cards.begin(), current_cards.end(), the_card ),
current_cards.end() );
此外,我不确定您是否正确执行任务。也许你的意思是以下
current_cards.erase( std::remove_if( current_cards.begin(), current_cards.end(),
[&]( const Card * & c ) { return *c == *the_card ); } ),
current_cards.end() );