编译错误:“没有匹配函数来调用'std :: vector <card *> :: insert(int,Card *&amp;)'”C ++

时间:2016-12-03 18:06:02

标签: c++ ubuntu vector compilation

我尝试使用vector的insert函数,但是我收到编译错误:

src / Hand.cpp:71:78:错误:没有匹配函数来调用'std :: vector :: insert(int,Card&amp;)'          Vvalues [place] - &gt; getVcards()。insert(Vvalues [place] - &gt; 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);

问题是什么,我该如何解决?

1 个答案:

答案 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);