更正覆盖 QDataStream 运算符和链接问题

Posted

技术标签:

【中文标题】更正覆盖 QDataStream 运算符和链接问题【英文标题】:Correct overriding QDataStream operators and linking problems 【发布时间】:2016-04-30 08:52:35 【问题描述】:

我需要重写 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;

编译成功后,我得到了一些类似这样的误解:

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

我有 2 个问题:

    我必须如何定义 > 运算符才能正确工作; 如果此代码正确,如何修复链接错误。

Tnx 寻求答案。

【问题讨论】:

【参考方案1】:

这很奇怪,但是通过功能公告和描述分开解决了问题。

【讨论】:

以上是关于更正覆盖 QDataStream 运算符和链接问题的主要内容,如果未能解决你的问题,请参考以下文章

Qt QSharedMemory 和 QDataStream

QT:重载 Qdatastream 中的“<<”运算符时出错

新的数据条目会覆盖列中所有过去的条目,我该如何更正?

如何更正装饰函数签名和类型提示?

类和正则表达(自动更正,和代数运算)

类和正则表达(自动更正,和代数运算)