crossplatform.ru

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

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> передача QString функции собственному классу
danya
  опции профиля:
сообщение 10.11.2010, 15:28
Сообщение #11


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 30.10.2010
Пользователь №: 2164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(panter_dsd @ 10.11.2010, 16:17) *
Там совсем в другом ошибка:
1. base::base file; замени на base file;
2. В base.cpp
baza(file,QSettings::IniFormat); замени на QSettings baza(file,QSettings::IniFormat);

2 так раньше и было)
а вот первое действительно тупанул спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 10.11.2010, 15:58
Сообщение #12


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


danya,
у тебя же есть член класса baza зачем локальную переменную в функции open_base тоже называешь baza при том она того же типа что и член класса!
Это тебя путает. Так делать не рекомендуется. назови по другому.

А если ты хочешь инициализировать член класса с именем baza то тебе надо написать не
baza(file,QSettings::IniFormat);
и не
QSettings baza(file,QSettings::IniFormat);
а
baza = QSettings(file,QSettings::IniFormat);
к моменту вызова open_base baza уже существует созданная конструктором по умолчанию.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
danya
  опции профиля:
сообщение 10.11.2010, 19:39
Сообщение #13


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 30.10.2010
Пользователь №: 2164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(kwisp @ 10.11.2010, 16:58) *
danya,
у тебя же есть член класса baza зачем локальную переменную в функции open_base тоже называешь baza при том она того же типа что и член класса!
Это тебя путает. Так делать не рекомендуется. назови по другому.

А если ты хочешь инициализировать член класса с именем baza то тебе надо написать не
baza(file,QSettings::IniFormat);
и не
QSettings baza(file,QSettings::IniFormat);
а
baza = QSettings(file,QSettings::IniFormat);
к моменту вызова open_base baza уже существует созданная конструктором по умолчанию.

сделал)
появилась следующая ошибка
 error: 'QSettings& QSettings::operator=(const QSettings&)' is private

в
baza = QSettings(file,QSettings::IniFormat);

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 10.11.2010, 20:13
Сообщение #14


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Всё верно, QSettings не имеет отрытого оператора присваивания и конструктора копирования.
Этот класс предназначен для создания локальной переменной, так всюду в примерах и применяется.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 11.11.2010, 11:32
Сообщение #15


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


danya,
я просто исходники твои скачал.
про то что оператор копирования закрыт это я проглядел в документации.
получается тебе не нужны члены класса QSettings baza и еще какой то не помню уже т.к. исходники удалил:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
danya
  опции профиля:
сообщение 11.11.2010, 13:45
Сообщение #16


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 30.10.2010
Пользователь №: 2164

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(kwisp @ 11.11.2010, 12:32) *
danya,
я просто исходники твои скачал.
про то что оператор копирования закрыт это я проглядел в документации.
получается тебе не нужны члены класса QSettings baza и еще какой то не помню уже т.к. исходники удалил:)

да я уже по другому сделал сделал общим переменную file вообщем сейчас всё работает спасибо всем :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Obey-Kun
  опции профиля:
сообщение 1.12.2010, 6:56
Сообщение #17


Студент
*

Группа: Участник
Сообщений: 96
Регистрация: 24.3.2010
Пользователь №: 1556

Спасибо сказали: 3 раз(а)




Репутация:   0  


Не следует передавать QString через копию. Лучше — через константную ссылку: int base::open_base(const QString &file). Такой метод будет вызываться быстрее.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 1.12.2010, 7:45
Сообщение #18


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Obey-Kun, иногда бывает так, что нет объекта, ссылку на который можно передать :) Тогда лучше иметь перегрузку с параметром по значению
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Obey-Kun
  опции профиля:
сообщение 1.12.2010, 10:54
Сообщение #19


Студент
*

Группа: Участник
Сообщений: 96
Регистрация: 24.3.2010
Пользователь №: 1556

Спасибо сказали: 3 раз(а)




Репутация:   0  


Цитата(Алексей1153 @ 1.12.2010, 7:45) *
Obey-Kun, иногда бывает так, что нет объекта, ссылку на который можно передать :) Тогда лучше иметь перегрузку с параметром по значению

Так перегрузку или параметр по умолчанию? :)

Перегрузка:
myMethod(const QString &string);
myMethod();


Параметр по умолчанию:
myMethod(QString string = "");


Я бы второго избегал именно потому, что во всех случаях, когда используется не параметр по умолчанию, оно будет работать медленнее, чем могло бы.

Сообщение отредактировал Obey-Kun - 1.12.2010, 10:55
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.12.2010, 11:22
Сообщение #20


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Obey-Kun @ 1.12.2010, 8:56) *
Такой метод будет вызываться быстрее.
в общем случае да, а в с лучае с QString - нет. Т.к. QString копирует данные, только при изменении оригинала/копии.
Этот класс специально оптимизирован
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 4.12.2024, 16:31