Создал для программы класс задача которого писать в консоль и в файл информацию, которую принимает через оператор
<<
сам класс#include <iostream>
#include <fstream>
class Logger {
public:
Logger() {
file.open("Logger.txt");
if (!file.is_open()) {
throw std::runtime_error("Fail open file \"Logger.txt\"");
}
}
~Logger() {
file.close();
}
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;
}
private:
std::ofstream file;
};
extern Logger logg
Любой участок программыlogg << 6 << " is six" << std::endl;
По идее это должен быть, как
std::cout
, но у меня возникает ошибка не разрешённый внешний символ методом проб я понял что ошибка возникает при попытке передачи информации через оператор, но если я объявлю этот класс там где он необходим то ошибок нет.
Решение:
MyClass.hclass MyClass {
//Описание класса
}
extern MyClass myclass
MyClass.cpp#include "MyClass.h"
MyClass myclass
Спасибо всем кто подсказал.