2017-01-05 7 views
1

私がここにいる問題はclass std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,class Sadrzaj const &)です。私はインターネット上で解決策を探し求めましたが、それを見つけることはできませんでした。この問題は、メインソースファイルにData.hを含めると発生します。同じことがContent.hで発生します。下記の2つのヘッダーファイルは参考用です。どんな助けでも大いに感謝します。 :-)C++のテンプレートの問題

#pragma once 
#include <iostream> 

class Content 
{ 
    friend std::ostream& operator<<(std::ostream &str, const Content&); 
public: 
    virtual void print(std::ostream&) const = 0; 
}; 

std::ostream& operator<<(std::ostream &str, const Content& temp) 
{ 
    temp.print(str); 
    return str; 
} 

#pragma once 
#include "Content.h" 

template <class T> 
class Data: public Content 
{ 
public: 
    Data(const T&); 
    void print(std::ostream&) const override; 
private: 
    T data; 
}; 

template <class T> 
Data<T>::Data(const T& data) : data(data) {} 

template <class T> 
void Data<T>::print(std::ostream& str) const { str << data; } 
+0

コンパイラからエラーメッセージが表示されますか?エラーメッセージの** exact **テキストを追加します。 –

+0

*正確なエラーはどうなりますか?また、誰もがやっていることで英語でプログラムしようとするので、誰かに助けを求めたり、授与したり、受けたりするのがより簡単になります。 – rubenvb

+0

'friend std :: ostream&Sadrzaj :: operator <<'は意味をなさない。おそらく 'Sadrzaj ::'部分を削除してください –

答えて

0

わかりましたので、問題は< <オペレータが「Content.h」ヘッダファイルに定義されたということでした。新しいソースファイル "Content.cpp"を作成してそこに定義するだけで、問題は解決されました。なぜ誰かがこのエラーを解決したことを知っていれば、私はそれを私に説明するととても感謝して、私は再び同じミスをしない。 :-)

関連する問題