我有一个类和类中的结构:
class MyClass : public QObject
{
public:
....
struct MyStruct
{
quint8 val1;
}
};
我想为结构重载运算符 << 和 >>,但我不知道该怎么做。目前,我确实喜欢这样:
class MyClass : public QObject
{
public:
....
struct MyStruct
{
quint8 val1;
QDataStream &operator<<(QDataStream &out, const MyStruct& _myStruct)
{
out << _myStruct.val1;
return out;
}
QDataStream &operator>>(QDataStream &in, MyStruct& _myStruct)
{
in >> _myStruct.val1;
return in;
}
};
};
但是不行
最佳答案
您需要将运算符声明为friend
:
friend QDataStream &operator<<(QDataStream &out, const MyStruct& _myStruct)
{
out << _myStruct.val1;
return out;
}
friend QDataStream &operator>>(QDataStream &in, MyStruct& _myStruct)
{
in >> _myStruct.val1;
return in;
}
关于c++ - 在 C++ 结构中重载运算符 << 和 >>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17693262/