Статус:
Offline
Реєстрація: 08.04.2009
Повідом.: 18006
Реєстрація: 08.04.2009
Повідом.: 18006
- 🟢 13:05 Відбій тривоги в м. Харків та Харківська територіальна громада.Слідкуйте за подальшими повідомленнями.#м_Харків_та_Харківська_територіальна_громада
- #1
С+ передача перегруженного оператора в 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
- всё выводится.