-1

BookおよびArticleから派生したクラスですMedium

Medium/ Book/を参考文献に挿入しようとすると、なぜこのエラーが発生するArticleのですか?

error: no matching function for call to '**std::reference_wrapper<Medium>::reference_wrapper()**

コンパイラ エラー

main.cc

#include <iostream>
using namespace std;
#include "Bibliography.h"
#include "Medium.h"
#include "Book.h"
#include "Article.h"

int main()
{
    Bibliography p(1);
    Medium m1("PN","I","Pasol nah",2017);
    p.insert(m1);
    cout << p;
    return 0;
}

参考文献.h

#ifndef BIBLIOGRAPHY_H_
#define BIBLIOGRAPHY_H_

#include "Medium.h"
#include "Article.h"
#include "Book.h"
#include <iostream>
#include <functional>
#include <vector>

class Bibliography
{
  private:
    int m_Size;
    std::vector<std::reference_wrapper<Medium>> v;
    int index;
  public:
    Bibliography(int size);
    void insert(Medium m);
    friend std::ostream& operator<<(std::ostream& out, const Bibliography &b1);
};

#endif

参考文献.cc

#include "Bibliography.h"

Bibliography::Bibliography(int size)
{
    std::cout << "Bibliography created \n";
    m_Size = size;
    v.resize(m_Size);
    index = 0;
}

void Bibliography::insert(Medium m)
{
    v.push_back(m);
}

std::ostream& operator<<(std::ostream& out, const Bibliography &b1)
{
    for (Medium &Medium : b1.v)
    {
        out << Medium.toString() << std::endl;
    }
    return out;
}
4

1 に答える 1