std::cout とファイルにログを記録するロガーを作成しようとしています。これは私のクラスです:
.h ファイル:
class ProblemsManager {
(...)
private:
(...)
class logger {
private:
std::ofstream fileStream;
static const std::string LOG_PATH;
public:
logger();
~logger();
template<class T>
friend logger & operator<<(logger &log, const T & bytes) {
log.fileStream<<bytes;
std::cout<<bytes;
return log;
}
};
};
.cpp ファイル
(...)
const std::string ProblemsManager::logger::LOG_PATH = "F:\\Dropbox\\workspace - Visual Studio\\PEuler\\PEuler\\PEuler.log";
ProblemsManager::logger::logger() : fileStream(LOG_PATH,std::ofstream::out) {}
ProblemsManager::logger::~logger() {}
次に、私がやろうとすると:
ProblemsManager::logger log;
log<<"test";
私は得る:
1>f:\dropbox\workspace - visual studio\peuler\peuler\problemsmanager.cpp(47): エラー C3767: '<<': 候補関数にアクセスできません 1> 'f:\ のフレンド関数である可能性がありますdropbox\workspace - visual studio\peuler\peuler\problemsmanager.h(37)' : '<<' [引数依存の検索で見つかる場合があります]