Статус:
Offline
Реєстрація: 08.04.2009
Повідом.: 18271
Реєстрація: 08.04.2009
Повідом.: 18271
С+ передача перегруженного оператора в pfintf(). Почему так?
Проблему решил, но "осадочек остался"(С)
Почему ТАК? не нахожу такой случай ни в одной книжке.
есть класс (пусть MYCLASS_STR:public MYCLASS - в оригинале всё тоже кпсом).
В нём перегружен оператор
char* aBuffer - объявден protected где-то там, он инициализирован, там всё нормально, данные в нём есть, память выделена.
То есть, я могу написать так
а потом если делать
получим необработанное исключение Нарушение прав доступа при чтении.
Не, я понимаю, что принтф - небезопасен, как минимум...
но в этом-то случае что конкретно ему не нравится?
Он пытается вывести сам код перегруженного оператора, не воспринимая, что нужен результат, а тупо пытаясь распарсить и напечатать сам оператор?
P.S. Если завести переменную а и віполнить ей
char* a=BRED
- всё выводится.
Проблему решил, но "осадочек остался"(С)
Почему ТАК? не нахожу такой случай ни в одной книжке.
есть класс (пусть MYCLASS_STR:public MYCLASS - в оригинале всё тоже кпсом).
В нём перегружен оператор
Код:
....
operator char*() const
{
return (char*) aBuffer;
}
....
То есть, я могу написать так
Код:
..
MYCLASS_STR BRED;
BRED="bred";
..
Код:
printf ("Write some bred = %s\n", BRED);
Не, я понимаю, что принтф - небезопасен, как минимум...
но в этом-то случае что конкретно ему не нравится?
Он пытается вывести сам код перегруженного оператора, не воспринимая, что нужен результат, а тупо пытаясь распарсить и напечатать сам оператор?
P.S. Если завести переменную а и віполнить ей
char* a=BRED
- всё выводится.