Я пытаюсь понять, как работает перегрузка операторов.
Я хочу закодировать его так, чтобы я мог написать
Log(Log::LEVEL_ERR) << "fatal error: " << 13 ;
И для строки, и для числа перегруженный операториспользуется.
Теперь у меня есть
class Log{
public:
std::ostream& operator<<(char const*);
}
std::ostream& Log::operator<<(char const* text){
if (Log::isToWrite()) {
printLevel();
std::cout << text;
}
return std::cout;
}
Это только строка, но не число, почему?
Редактировать @bitmask Просто чтобычтобы быть понятным, вы имеете в виду реализовать так:
class Log{
public:
friend Log& operator<<(Log& in, char const* text);
}
friend Log& operator<<(Log& in, char const* text){
if (in.isToWrite()) {
in.printLevel();
std::cout << text;
}
return std::cout;
}
Поскольку теперь я получаю их везде:
ошибка: семантическая проблема: недопустимые операнды для двоичного выражения ('Log' and 'const char [15] ')
Может быть, это действительно просто, но можете ли вы объяснить это для меня?
Я действительно не понимаю.