Russian Qt Forum
Ноябрь 24, 2024, 11:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Почему компилятор ругается на QString text(QChar(xxx));  (Прочитано 3655 раз)
Sancho_s_rancho
Гость
« : Январь 10, 2010, 13:51 »

Следующий код собирается:
Код:
QString text(QChar(80));
И такой тоже:
Код:
    int xxx = 80;
    QString text;
    text = QChar(xxx);
Но на третий вариант:
Код:
int xxx = 80;
QString text(QChar(xxx));
компилятор говорит:
error: no matching function for call to ‘QPainter::drawText(QPoint, QString (&)(QChar))’
ругаясь на строчку
Код:
painter.drawText(QPoint(0,mapSize.height()-1), text);
(void QPainter::drawText ( const QPoint & position, const QString & text ))

« Последнее редактирование: Январь 10, 2010, 13:53 от Sancho_s_rancho » Записан
Dendy
Гость
« Ответ #1 : Январь 10, 2010, 14:06 »

Потому что копилятор подумал, что text - это предварительное обьявление функции, которая принимает QChar и возвращает QString. Делайте так: QString text = QChar(xxx);
Записан
Sancho_s_rancho
Гость
« Ответ #2 : Январь 10, 2010, 16:10 »

Потому что копилятор подумал, что text - это предварительное обьявление функции, которая принимает QChar и возвращает QString. Делайте так: QString text = QChar(xxx);
Интересно, а стандарт С++ как регламентирует такое?
Записан
Dendy
Гость
« Ответ #3 : Январь 10, 2010, 16:35 »

Это один из конфликтов в C++, вроде >> при закрытии двойного шаблона. Лично я по умолчанию верю GCC. Вообще компилятор на этот случай превращает визуальный оператор присваивания в конструктор, следующие две записи эквивалентны:

Код
C++ (Qt)
QString text( QChar( xxx ) );
QString text = QString( QChar( xxx ) );
 

Я как правило пользуюсь второй, она более выразительна.
Записан
Sancho_s_rancho
Гость
« Ответ #4 : Январь 10, 2010, 17:14 »

Спасибо за информацию, приму к сведению.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.207 секунд. Запросов: 21.