0

私はクラスとそのようなクラス内の構造を持っています:

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;
       }
    };
};

しかし、それはOKではありません

4

3 に答える 3

1

QDataStreamクラスメンバーとして追加しても問題ないと思います。あなたが意味するコンテキストでは、operator>>1つのパラメーターのみを受け入れます。コードは次のとおりです。

class MyClass : public QObject
{
private:
QDataStream in;
QDataStream out;
...

public:
    ....

    struct MyStruct
    {
       quint8 val1;

       QDataStream &operator<<(const MyStruct& _myStruct)
       {
           out << _myStruct.val1;
           return out;
       }

       QDataStream &operator>>(MyStruct& _myStruct)
       {
           in >> _myStruct.val1;
           return in;
       }
    };
};
于 2013-07-17T07:08:48.270 に答える