crossplatform.ru

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


  Ответ в QHash
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
BRE Дата 16.2.2010, 22:02
 
Цитата(Litkevich Yuriy @ 16.2.2010, 22:00) *
тогда в изначальный код можно было бы и самим тролям добавить пару открытых функций:


Юра, они это подразумевали под ... :)
class Employee
{
public:
     Employee() {}
     Employee(const QString &name, const QDate &dateOfBirth);
     ...

private:
     QString myName;
     QDate myDateOfBirth;
};
Litkevich Yuriy Дата 16.2.2010, 22:00
  Чёт я на функции вообще внимания не обратил

тогда в изначальный код можно было бы и самим тролям добавить пару открытых функций:
QString name(){return myName;}
QDate dateOfBirth(){return myDateOfBirth;}
BRE Дата 16.2.2010, 21:52
 
Раскрывающийся текст
public:     
     Employee() {}
     Employee(const QString &name, const QDate &dateOfBirth);

     QString myName;
     QDate myDateOfBirth;
};

inline bool operator==(const Employee &e1, const Employee &e2)
{
    // У тебя в классе Employee разве есть метод name()? Вроже нет... А ты пытаешься его вызвать, о чем тебе компилятор и говорит
     return e1.name() == e2.name() //  'name' : is not a member of 'Employee'
    // также у тебя нет метода dateOfBirth()...
            && e1.dateOfBirth() == e2.dateOfBirth();
}

inline uint qHash(const Employee &key)
{
    // У тебя нет метода myName() и myDateOfBirth(), есть такие переменные.
     return qHash(key.myName()) ^ key.myDateOfBirth().day();
}


Пока ты не выучишь C++ писать на нем не получиться. ;)
http://www.proklondike.com/books/cpp/straustrup_cpp.html
k0p4 Дата 16.2.2010, 21:46
  т.е. код должен выглядеть так?
Раскрывающийся текст
public:     
     Employee() {}
     Employee(const QString &name, const QDate &dateOfBirth);

     QString myName;
     QDate myDateOfBirth;
};

inline bool operator==(const Employee &e1, const Employee &e2)
{
     return e1.name() == e2.name() //  'name' : is not a member of 'Employee'
            && e1.dateOfBirth() == e2.dateOfBirth();
}

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


Litkevich Yuriy Дата 16.2.2010, 21:38
 
Цитата(k0p4 @ 17.2.2010, 0:33) *
переменные name, dateOfBirth, должны быть где-то определены?
чтобы не иметь проблем в конструкторе при инициализации внутренних переменных класса, входными аргументами конструктора. Лучше оставить имена внутренних переменных как есть, а исправить имена переменных в inline-функциях
k0p4 Дата 16.2.2010, 21:33
 
Цитата
2) Переменные-члены закрытые, а функции не дружественные.

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



помимо этой записи
Employee(const QString &name, const QDate &dateOfBirth);
, переменные name, dateOfBirth, должны быть где-то определены?
Litkevich Yuriy Дата 16.2.2010, 21:30
 
Цитата(k0p4 @ 17.2.2010, 0:28) *
переменные в конструкторе определять не в конструкторе?
не понял
k0p4 Дата 16.2.2010, 21:28
  кстати, надо было переменные в конструкторе определять не в конструкторе?, т.е
Раскрывающийся текст
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:27
 
Цитата(k0p4 @ 17.2.2010, 0:16) *
поправил так :
а почему так?

В одном простом примере троли наделали ошибок.
1) Имена переменных-членов класса не совпадают с тем что во встраиваемых функциях
2) Переменные-члены закрытые, а функции не дружественные.
k0p4 Дата 16.2.2010, 21:16
  поправил так :
Раскрывающийся текст
private:
     QString Name;
     QDate DateOfBirth;

ошибки абсолютно те же.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 14:59