Russian Qt Forum
Ноябрь 27, 2024, 17:15
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Работа c QHesh, использование своего класса в хэше
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Работа c QHesh, использование своего класса в хэше (Прочитано 6427 раз)
romanster
Гость
Работа c QHesh, использование своего класса в хэше
«
:
Июль 18, 2013, 13:38 »
Здравствуйте элементарщина не получается если можно подскажите пожалуйста. Объявил класс :
class HashClass
{
public:
HashClass(QString value1, QString value2, QString value3);
QString value1() const;
QString value2() const;
QString value3() const;
private:
QString vvalue1, vvalue2, vvalue3;
};
inline bool operator==(const HashClass &a, const HashClass &b)
{
return (a.value1() == b.value1()) && (a.value2() == b.value2()) && (a.value3() == b.value3());
}
inline uint qHash(const HashClass &key)
{
return qHash(key.value1()) ^ qHash( key.value2() ) ^ qHash( key.value3() );
}
HashClass::HashClass( QString value1, QString value2, QString value3 ) : vvalue1( value1 ),vvalue2( value2 ),vvalue3( value3 ){}
QString HashClass::value1() const { return vvalue1;}
QString HashClass::value2() const { return vvalue2;}
QString HashClass::value3() const {return vvalue3;}
Для кнопки описал процедурку подконнектил и пытаюсь что то записать в хэш и извлеч от туда:
void window::Generate(){
QHash<HashClass,int> hash;
hash[HashClass("1", "2","3")] = 10;
QString s = "";
int n = hash.count(HashClass("1", "2","3"));
QMessageBox::information(this, tr("inf"), s.number(n, 10));
}
Выдает оч много ошибок и не компилируется не указывает что именно в листинге не так.
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Работа c QHesh, использование своего класса в хэше
«
Ответ #1 :
Июль 18, 2013, 15:16 »
при тонне ошибок обычно самая первая в списке будет что-то означать, остальные подтягиваются просто «по инерции». проблем с классом вроде нету.
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
VPS
Гость
Re: Работа c QHesh, использование своего класса в хэше
«
Ответ #2 :
Июль 18, 2013, 16:18 »
У Вас строка "#include <QHash>" есть в объявлении класса?
Записан
gil9red
Administrator
Джедай : наставник для всех
Offline
Сообщений: 1805
Re: Работа c QHesh, использование своего класса в хэше
«
Ответ #3 :
Июль 18, 2013, 18:24 »
Скопировали бы сюда хотя бы те ошибки
Записан
https://github.com/gil9red
https://ru.stackoverflow.com/users/201445/gil9red
romanster
Гость
Re: Работа c QHesh, использование своего класса в хэше
«
Ответ #4 :
Июль 21, 2013, 16:56 »
Объявляю как QHash<QString,HashClass> HashTab;
Далее пишу в табличку HashTab["0"]= HashClass("123","8909");
Пытаюсь получить данные по индексу QMessageBox::information(this, tr("inf"), HashTab.value("0").val1());
На этапе получения данных ошибки.
«
Последнее редактирование: Июль 21, 2013, 17:06 от romanster
»
Записан
romanster
Гость
Re: Работа c QHesh, использование своего класса в хэше
«
Ответ #5 :
Июль 21, 2013, 17:00 »
Ошибки в таком духе :
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Работа c QHesh, использование своего класса в хэше
«
Ответ #6 :
Июль 21, 2013, 17:21 »
Определите конструктор по умолчанию (это который без параметров) для вашего класса HashClass.
Записан
romanster
Гость
Re: Работа c QHesh, использование своего класса в хэше
«
Ответ #7 :
Июль 22, 2013, 13:03 »
Да спсб определил и функции сделал думаю вот когда оператор << сериализую то приватные переменные не работают в нем а надо бы:
inline QDataStream &operator<<(QDataStream &in, const HashClass &m)
{
in << m.vv;
in<< m.vv2;
return in;
}
«
Последнее редактирование: Июль 22, 2013, 13:06 от romanster
»
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Работа c QHesh, использование своего класса в хэше
«
Ответ #8 :
Июль 22, 2013, 13:23 »
Так сделайте эти функции friend для вашего класса.
Записан
romanster
Гость
Re: Работа c QHesh, использование своего класса в хэше
«
Ответ #9 :
Июль 23, 2013, 05:44 »
Благодарствую вас Old видимо смысл аватары оправдывает владельца. И всем так же спасибо все заработало. Далее попробую разобратся с чилд классами форм если будут сомнения напишу.
Записан
ритт
Гость
Re: Работа c QHesh, использование своего класса в хэше
«
Ответ #10 :
Июль 23, 2013, 10:14 »
@Old: тс назвал тебя старой злобной ушастой лягушкой? там кнопочка справа внизу "сообщить модератору" ))
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Работа c QHesh, использование своего класса в хэше
«
Ответ #11 :
Июль 23, 2013, 10:16 »
Цитата: Константин от Июль 23, 2013, 10:14
@Old: тс назвал тебя старой злобной ушастой лягушкой? там кнопочка справа внизу "сообщить модератору" ))
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...