2017-12-16 11 views
-3
#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; 
} 




#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 

の#include "Bibliography.h"エラー:STD」への呼び出しに該当する機能:: reference_wrapper <Medium> :: reference_wrapper()

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

挿入しようとしたとき、私はこのエラーを取得しています参考文献の中/書/記事。
本と記事は中級から派生したクラスです。
質問:何が間違っていますか?
エラー:私はコールに該当する機能**のstd :: reference_wrapper :: reference_wrapper()」から**

https://i.stack.imgur.com/HGSK4.png
このウェブサイト上で初めて、厳密に判断してはいけない;)

+0

エラーが発生した場合:画像自体ではなくテキストとして質問自体に含めます。 –

答えて

0

vectorreference_wrapperのこれらのコンストラクタを見て、reference_wrapperはそれを持っていない、デフォルトコンストラクタを持つオブジェクトを保つことができるので、あなたは、vectorreference_wrapperを使用しないでください。

この行で
initialization (1) 
reference_wrapper (type& ref) noexcept; 
reference_wrapper (type&&) = delete; 
copy (2)  
reference_wrapper (const reference_wrapper& x) noexcept; 

v.resize(m_Size); 

あなたはm_Size reference_wrapperオブジェクトを作成したいのですが、reference_wrapperのデフォルトコンストラクタが存在しない、とのコードがコンパイルすることはできません。

reference_wrappervectorを使用できますが、デフォルトのコンストラクタを定義する必要があるベクターのメソッドが呼び出されると、コンパイルエラー が返されます。

関連する問題