標準出力から「データ」を傍受しようとしています(この質問では、coutを使用しています)。また、この質問では double を使用していますが、プログラムはプリミティブ データ型を処理できる必要があります。コードをコンパイルしようとすると、次のエラーが発生します。
「std::ostream& SpyOutput::operator<< (double const&)」への未定義の参照 collect2: エラー: ld が 1 つの終了ステータスを返しました
これが私のメインです:
#include "SpyOutput.h"
#define endl '\n'
int main ( int argc, char *argv[], char *env[] ) {
double d1 = 12.3;
SpyOutput spy(&cout);
spy << d1;
return 0;
}
これは私のヘッダーファイルです:
#include <iostream>
using namespace std;
class SpyOutput {
private:
ostream* output;
public:
SpyOutput(ostream* os);
template <class T>
ostream &operator<<(const T &x);
};
これは私の実装ファイルです:
#include "SpyOutput.h"
SpyOutput::SpyOutput(ostream* os){
output = os;
}
template <class T>
ostream& SpyOutput::operator<<(const T &x){
// SOME CODE GO HERE
return *output;
}
有効な解決策を見つけることなく、このエラー (および同様のエラー) をグーグル検索しました。:-)