2

カスタム タイプのオブジェクトをプッシュバックしようとすると、このエラーが発生します。コードは次のとおりです。

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&)' の呼び出しに一致する関数がありません

誰かがこれで私を助けることができますか? 私はプログラミングが初めてです

4

1 に答える 1

5

ベクターには push_back 関数の実装が 2 つしかありません

  • push_back(const T&)
  • push_back(T&&) (C++11以降)

const T&これは、コピーコンストラクターにクラスのパラメーターを提供する必要がある理由を説明しています

于 2012-10-14T09:42:05.353 に答える