Название: Почему компилятор ругается на QString text(QChar(xxx)); Отправлено: Sancho_s_rancho от Январь 10, 2010, 13:51 Следующий код собирается:
Код: QString text(QChar(80)); Код: int xxx = 80; Код: int xxx = 80; error: no matching function for call to ‘QPainter::drawText(QPoint, QString (&)(QChar))’ ругаясь на строчку Код: painter.drawText(QPoint(0,mapSize.height()-1), text); Название: Re: Почему компилятор ругается на QString text(QChar(xxx)); Отправлено: Dendy от Январь 10, 2010, 14:06 Потому что копилятор подумал, что text - это предварительное обьявление функции, которая принимает QChar и возвращает QString. Делайте так: QString text = QChar(xxx);
Название: Re: Почему компилятор ругается на QString text(QChar(xxx)); Отправлено: Sancho_s_rancho от Январь 10, 2010, 16:10 Потому что копилятор подумал, что text - это предварительное обьявление функции, которая принимает QChar и возвращает QString. Делайте так: QString text = QChar(xxx); Интересно, а стандарт С++ как регламентирует такое?Название: Re: Почему компилятор ругается на QString text(QChar(xxx)); Отправлено: Dendy от Январь 10, 2010, 16:35 Это один из конфликтов в C++, вроде >> при закрытии двойного шаблона. Лично я по умолчанию верю GCC. Вообще компилятор на этот случай превращает визуальный оператор присваивания в конструктор, следующие две записи эквивалентны:
Код
Я как правило пользуюсь второй, она более выразительна. Название: Re: Почему компилятор ругается на QString text(QChar(xxx)); Отправлено: Sancho_s_rancho от Январь 10, 2010, 17:14 Спасибо за информацию, приму к сведению.
|