gpt4 book ai didi

c++ - 使用 QDataStream 的 Qt 序列化 bool 值

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:48 25 4
gpt4 key购买 nike

我在尝试序列化我的自定义类时遇到错误。我正在使用 QDataStream 运算符 << 和 >> 来写入和读取我的对象。

当我尝试写入或读取 bool 值时发生错误:

error: ambiguous overload for 'operator<<' (operand types are 'QDataStream' and 'const bool')
QDataStream & operator << (QDataStream & out, const sys_settings & Value)
{
out << Value.myBool
<< Value.someString;
return out;
}
QDataStream & operator >> (QDataStream & in, sys_settings & Value)
{
in >> Value.myBool;
in >> Value.someString
return in;
}

最佳答案

您很可能没有包含相关标题。如果不包含 QDataStream,我可以重现您的问题。

根据您的评论,由于您的成员是私有(private)的,因此您的类(class)也必须成为流媒体运营商的 friend 。

以下编译成功:

#include <QString>
#include <QDataStream>

class C {
// Everything here is private, the stream operator must be friends!
bool b;
QString s;
C() : b(false) {}
friend QDataStream & operator << (QDataStream & out, const C & val);
};

QDataStream & operator << (QDataStream & out, const C & val)
{
out << val.b << val.s;
return out;
}

注意 struct Foo { int a;诠释乙; }; 等同于 class Foo { public: int a;诠释乙; };。 C++ struct 只是一个默认访问说明符设置为 public 的类。 class 的默认访问说明符设置为 private。否则,没有区别。

关于c++ - 使用 QDataStream 的 Qt 序列化 bool 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18657293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com