2016-04-30 9 views
0

Мне нужно переопределить >> и < < операторов QDataStream. Там мой код:
Правильное переопределение операторов QDataStream и проблем с связыванием

QDataStream &operator <<(QDataStream &out, const SScenarioEntry Entry) 
{ 
    out.writeRawData(Entry.EntryName, sizeof(Entry.EntryName)); 
    out << Entry.Number; 
    out << Entry.Type; 
    out.writeRawData(Entry.RequestString, sizeof(Entry.RequestString)); 
    out.writeRawData(Entry.AnswerString, sizeof(Entry.AnswerString)); 
    out.writeRawData(Entry.AdditionalParams, sizeof(Entry.AdditionalParams)); 
    out << Entry.Timeout; 
    return out; 
} 

QDataStream &operator >>(QDataStream &in, SScenarioEntry Entry) 
{ 
    in.readRawData(Entry.EntryName, sizeof(Entry.EntryName)); 
    in >> Entry.Number; 
    in >> Entry.Type; 
    in.readRawData(Entry.RequestString, sizeof(Entry.RequestString)); 
    in.readRawData(Entry.AnswerString, sizeof(Entry.AnswerString)); 
    in.readRawData(Entry.AdditionalParams, sizeof(Entry.AdditionalParams)); 
    in >> Entry.Timeout; 
    return in; 
} 

После успешной компиляции, я получаю некоторые misunderstandable ошибки, как это:

first define here 
In function `Z7qt_noopv': 
multiple definition of `operator>>(QDataStream&, scnent)` 

У меня 2 вопроса:

  1. Как я должен определить < < и >> операторы для правильной работы;
  2. Если этот код верен, как исправить ошибки связывания.


Tnx для ответов.

ответ

0

Это очень странно, но проблема была решена путем деления функций объявлений и описаний.