2016-12-03 3 views
-2

C++ Я пытаюсь использовать вставки функции вектора, но я получаю ошибку компиляции, говоря:Ошибка компиляции: «нет функции согласования для вызова„станд :: вектор <Card*> :: вставки (междунар, Card * &)“»

src/Hand.cpp: 71: 78: ошибка: нет подходящей функции для вызова в 'std :: vector :: insert (int, card &)' Vvalues ​​[место] -> getVcards(). Insert (Vvalues ​​[ место] -> 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

'Vvalues ​​[место] -> getSize() - 1' не дает вам действительного итератора для' Vvalues'. Похоже, вы предпочитаете 'Vvalues.end()' там. –

+0

'insert' принимает итератор, а не индекс. – molbdnilo

+0

Возможно, вы захотите использовать 'std :: vector :: push_back()', а не 'insert'. –

ответ

0

std :: insert не принимает значение int в качестве параметра.

Функция getSize() возвращает int и вместо этого принимает итератор.

Вот допустимые параметры вектора :: вставки в C++ 11

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

Смежные вопросы