& quot; нет соответствующей функции & quot; ошибка вызова при использовании push_back для пользовательского типа

Я получаю эту ошибку при попытке отодвинуть объект пользовательского типа. код следует:

class Item_base
{
public:
Item_base(string isbn=" ", int num=0):book(isbn),number(num){}
Item_base(Item_base &I):book(I.book),number(I.number){cout<<"\nCopy Constructor"<<endl;}
Item_base &operator=(Item_base &d){if (this != &d){this->book=d.book;this->number=d.number;cout<<"\nAssignment Operator"<<endl;return *this;}else{cout<<"\nAssignment Operator"<<endl;return *this;}}
~Item_base(){cout<<"Item_base Destructor"<<endl;}
protected:
string book;
int number;
};#include <iostream>
using namespace std;
#include <vector>
#include "Item_base.h"int main (int argc, char * const argv[]) {
// insert code here...
vector<Item_base> vecbase;
Item_base derivo("Harry Potter",10);
cout<<"enter book name, qty, dqty"<<endl;
vecbase.push_back(derivo);
return 0;
}

Я получаю сообщение об ошибке:

ошибка: нет соответствующей функции для вызова Item_base :: Item_base (const Item_base&)»

Может кто-то помочь мне с этим? Я новичок в программировании

2

Решение

Вектор имеет только две реализации функции push_back

  • push_back(const T&)
  • push_back(T&&) (начиная с C ++ 11)

Это объясняет, почему нам нужно предоставить конструктору копирования параметр const T& для нашего класса

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]