crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Проблема при переходе на 4.6
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
XpycT Дата 2.12.2009, 21:18
  Все решилось методом тыка..только отписался поздно. Просто привер второй конструктор к виду с const и проблема отпала сама собой.. странно что в 4,6 это потребовалось - раньше обходился и без этого :)
Litkevich Yuriy Дата 2.12.2009, 20:35
 
Цитата(kwisp @ 2.12.2009, 22:37) *
константная может быть как с так и без значения по умолчанию.
ну да, надо было фразу иначе построить
kwisp Дата 2.12.2009, 19:37
 
Цитата(Litkevich Yuriy @ 2.12.2009, 16:50) *
либо константная с умалчиваемым значением

константная может быть как с так и без значения по умолчанию.
Litkevich Yuriy Дата 2.12.2009, 16:50
  ага, понял. Если ссылка, то
либо не константная без умалчиваемого значения
либо константная с умалчиваемым значением


Либо вовсе не ссылка (по значению или по указателю), тогда можно и умалчиваемое значение
Tonal Дата 2.12.2009, 14:25
  Да. Убрать const можно только со значениями по умолчанию.
Простой пример:
void foo(int& a = 5) {
  a = 10;
}

int main() {
  foo();
}

Как компилятор должен это обработать?
Куда запишется 10 после вызова foo() в main-е?
Litkevich Yuriy Дата 2.12.2009, 11:43
  Tonal, я тебя не понял, вот стандартная функция:
QStringList QFileDialog::getOpenFileNames ( QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0 ) [static]

что мы не имеем права убрать слово const?
Tonal Дата 2.12.2009, 11:38
  Какой компилятор?

Конструкция some_type& arg = value в параметрах функции компилится по стандарту не может, т.к. получается противоречие: value в данном случае константа, а внутри функции ты её можешь менять. :)
Эта конструкция работала только в очень старых и не поддерживающих стандарт компиляторах, типа bcc32 v5.0 или msvc 6

Про QStringList не ясно - напиши какую именно ошибку выдаёт компилятор.
Litkevich Yuriy Дата 2.12.2009, 11:30
  Обычно используют конструктор по умолчанию, т.е. вместо:
const QString &name=""
пишут
const QString &name=QString()


П.С. это относится не 4.6., а вообще

наличе/отсутствие const не должно никак влиять, т.к. это лишь подсказка компилятору проверить за тебя правильность использования данных внутри метода (если аргумент помечен как константный, то его нельзя менять внутри функции)
XpycT Дата 2.12.2009, 10:08
  Есть проект - прекрасно компилился на версиях 4.5.х , но при переходе на 4.6 начало выдавать ошибки в конструкторе класса.

Первая была решена подстановкой const , тоесть вместо
QString &content=""

сделал
const QString &content=""


А вот с QStringList &screens=QStringList() проблемку не решил :) .. сам конструктор класса
 PreviewDialog(QWidget *parent=0,const QString &name=""
                  ,const QString &category="",const QString &content=""
                  ,const QString &poster="",QStringList &screens=QStringList());


Тоесть в QStringList &screen при создании диалога должен передаться массив ссылок на скриншоты.

Подскажите как задать пустое значение по умолчанию в 4,6.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 11:10