crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> QHash
k0p4
  опции профиля:
сообщение 16.2.2010, 20:57
Сообщение #1


Студент
*

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

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




Репутация:   0  


Здравствуйте. Есть проблемка. Не могу засунуть собственный клас в QHash, вот такой код :
hash.h :
#ifndef EMPLOYEE_H
#define EMPLOYEE_H
#include <QtGui>
#include <QString>
#include <QHash>

class Employee
{
public:
     Employee() {}
     Employee(const QString &name, const QDate &dateOfBirth);


private:
     QString myName;
     QDate myDateOfBirth;
};

inline bool operator==(const Employee &e1, const Employee &e2)
{
     return e1.name() == e2.name()
            && e1.dateOfBirth() == e2.dateOfBirth();
}

inline uint qHash(const Employee &key)
{
     return qHash(key.name()) ^ key.dateOfBirth().day();
}

#endif // EMPLOYEE_H
hash.cpp:
#include "hash.h"
#include <QtGui>
#include <QHash>
#include <QString>

Employee::Employee(const QString &name, const QDate &dateOfBirth)
{
    QHash<QString, Employee  *> hash;


}


Покажите плз ошибки, очень надо, за ранее благодарен.

Сообщение отредактировал Litkevich Yuriy - 16.2.2010, 21:02
Причина редактирования: форматирование
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 16.2.2010, 21:04
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

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




Репутация:   2  


Че компилятор то выдает? Какие ошибки?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.2.2010, 21:12
Сообщение #3


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

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

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




Репутация:   94  


Цитата(k0p4 @ 16.2.2010, 23:57) *
Не могу засунуть собственный клас в QHash
а что собственно значит "не могу засунуть" не компилируется? тогда какую ошибку получаешь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
k0p4
  опции профиля:
сообщение 16.2.2010, 21:12
Сообщение #4


Студент
*

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

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




Репутация:   0  


Цитата
Че компилятор то выдает? Какие ошибки?


c:/users/k0p4/documents/testhash/hash.h:21: error: 'name' : is not a member of 'Employee'
c:/users/k0p4/documents/testhash/hash.h:22: error: 'dateOfBirth' : is not a member of 'Employee'
c:/users/k0p4/documents/testhash/hash.h:27: error: left of '.day' must have class/struct/union
C:/Users/k0p4/Documents/testHash/main.cpp:8: error: 'show' : is not a member of 'Employee' \\ подозреваю, что тут у меня главная ошибка...
, причём 1 и 2 ошибка повторяються раз по пять.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.2.2010, 21:14
Сообщение #5


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

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

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




Репутация:   94  


Цитата(k0p4 @ 16.2.2010, 23:57) *
QString myName;
QDate myDateOfBirth;
Цитата(k0p4 @ 16.2.2010, 23:57) *
key.name()
Цитата(k0p4 @ 16.2.2010, 23:57) *
key.dateOfBirth()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
k0p4
  опции профиля:
сообщение 16.2.2010, 21:16
Сообщение #6


Студент
*

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

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




Репутация:   0  


поправил так :
Раскрывающийся текст
private:
     QString Name;
     QDate DateOfBirth;

ошибки абсолютно те же.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.2.2010, 21:27
Сообщение #7


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

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

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




Репутация:   94  


Цитата(k0p4 @ 17.2.2010, 0:16) *
поправил так :
а почему так?

В одном простом примере троли наделали ошибок.
1) Имена переменных-членов класса не совпадают с тем что во встраиваемых функциях
2) Переменные-члены закрытые, а функции не дружественные.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
k0p4
  опции профиля:
сообщение 16.2.2010, 21:28
Сообщение #8


Студент
*

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

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




Репутация:   0  


кстати, надо было переменные в конструкторе определять не в конструкторе?, т.е
Раскрывающийся текст
QString name;
QString dateOfBirth;
Employee() {}
Employee(const QString &name, const QDate &dateOfBirth);

после этой записи совсем другие ошибки...
c:/users/k0p4/documents/testhash/hash.h:21: error: term does not evaluate to a function taking 0 arguments
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 16.2.2010, 21:30
Сообщение #9


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

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

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




Репутация:   94  


Цитата(k0p4 @ 17.2.2010, 0:28) *
переменные в конструкторе определять не в конструкторе?
не понял
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
k0p4
  опции профиля:
сообщение 16.2.2010, 21:33
Сообщение #10


Студент
*

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

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




Репутация:   0  


Цитата
2) Переменные-члены закрытые, а функции не дружественные.

это я исправил, сразу же после своего поста, потому как дошло. т.е. я определил переменные как паблик.



помимо этой записи
Employee(const QString &name, const QDate &dateOfBirth);
, переменные name, dateOfBirth, должны быть где-то определены?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 29.11.2024, 19:41