Как можно правильно подключить и использовать класс Logger из другого файла? У меня возникает ошибка "не разрешённый внешний символ" при передаче информации через оператор <<. Заметил, что ошибка исчезает, если объявить класс Logger там, где он необходим. Что нужно сделать, чтобы исправить эту проблему?
Измените в коде строку "extern Logger logg" на "Logger logg;", чтобы создать объект logg. Кроме того, обратите внимание на улучшенный код:
#include <iostream>
#include <fstream>
class Logger {
public:
Logger() {
openFile("Logger.txt");
}
~Logger() {
closeFile();
}
template<class T>
Logger& operator<<(const T& value) {
file << value;
std::cout << value;
return *this;
}
Logger& operator<<(std::ostream& (*manipulator) (std::ostream&)) {
file << manipulator;
std::cout << manipulator;
return *this;
}
void openFile(const char *path) {
file.open(path);
if(!file.is_open()) {
throw std::runtime_error("Failed to open 'Logger.txt'");
}
}
void closeFile() {
file.close();
}
private:
std::ofstream file;
};
Logger logger;
logger << 6 << " is six" << std::endl;