我尝试使用vector的insert函数,但是我收到编译错误:
src / Hand.cpp:71:78:错误:没有匹配函数来调用'std :: vector :: insert(int,Card&)' Vvalues [place] - > getVcards()。insert(Vvalues [place] - > getSize() - 1,* card);
据我所知,我要插入的元素类型与插入的签名不匹配,但我无法弄清楚原因。
这是我的功能:
bool Hand::addCard(Card* card)
{
int place = Hand::searchCard(card); // the case that there is values in Vvalues but no one of them contain &card value
if (place <0)
{
Value* v = new Value(card);
if (place == -1 || place == -2) Vvalues.insert(Vvalues.begin(),v);
else if (place == -3) Vvalues.insert(Vvalues.end(),v);
else if (place == -4) insertValueSortedWay(v);
}
else
{
Vvalues[place]->getVcards().insert(Vvalues[place]->getSize()-1, *card);
}
return true;
}
而不是我尝试编译,我得到了这个:
src/Hand.cpp:71:78: error: no matching function for call to ‘std::vector<Card*>::insert(int, Card&)’
Vvalues[place]->getVcards().insert(Vvalues[place]->getSize()-1, *card);
问题是什么,我该如何解决?
答案 0 :(得分:0)
std :: insert不会将int作为参数。
你的getSize()
函数返回一个int,而是取一个迭代器。
以下是c ++ 11中vector :: insert的有效参数
insert (const_iterator position, const value_type& val);
insert (const_iterator position, size_type n, const value_type& val);
insert (const_iterator position, InputIterator first, InputIterator last);
insert (const_iterator position, value_type&& val);
insert (const_iterator position, initializer_list<value_type> il);