Если в Log записывать числа, всё работает как надо, а для строк записывается опять число, и такое впечатление, что это адрес szmsg. Почему так происходит?
...
_>Если в Log записывать числа, всё работает как надо, а для строк записывается опять число, и такое впечатление, что это адрес szmsg. Почему так происходит?
Потому что operator<< в std::ostream определен только для const void *, но не для const char *.
для вывода стандарнтных строк используется оператор определенный не в теле класса:
Тогда компилятор говорит "error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'overloaded-function' (or there is no acceptable conversion)".
_>Тогда компилятор говорит "error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'overloaded-function' (or there is no acceptable conversion)".
1) какой компилятор?
2) используем ли ты fastream из <fstream> или устаревший из <fstream.h> ?
3) на аргументе какого типа выдается это сообщение об ошибке ?
C>1) какой компилятор? C>2) используем ли ты fastream из <fstream> или устаревший из <fstream.h> ? C>3) на аргументе какого типа выдается это сообщение об ошибке ?
1) Visual C++ 2005 express edition
2) <fstream>
3) endl
Здравствуйте, cs_student, Вы писали:
C>>1) какой компилятор? C>>2) используем ли ты fastream из <fstream> или устаревший из <fstream.h> ? C>>3) на аргументе какого типа выдается это сообщение об ошибке ?
_>1) Visual C++ 2005 express edition _>2) <fstream> _>3) endl
Для манипуляторов потребуется написать отдельную специализацию:
Проверил со стандартными манипуляторами работает.
Возможно, потребуется написать еще специализации для ios_base& (*m)(ios_base&) и для basic_ios<>& (*m)(basic_ios<>&)