неоднозначная ошибка перегрузки оператора << подкласс QdataStream и персональный класс - PullRequest
0 голосов
/ 29 июня 2018

Я работаю с Qt 5.10, и мне нужно создать подкласс QDatastream, и я перегружаю оператор << другим классом, например так: </p>

class myDataStream:public QDataStream
{
public :
    myDataStream(QIODevice* device):QDataStream(device)
    {}
};

class data
{
public:
    data(double v):data_(v) {}
    double getData()  const {return data_;}

    void record(myDataStream& stream) const;

private:
    double data_;
};

void data::record(myDataStream &stream) const
{
    stream<<getData();
}

myDataStream &operator<<(myDataStream &stream, const data &d )
{
    stream<<d.getData(); //<------ Error here
    return stream;
}

У меня есть эта ошибка:

> error: use of overloaded operator '<<' is ambiguous (with operand types 'myDataStream' and 'double')

Когда я удаляю оператор const за такими данными:

myDataStream &operator<<(myDataStream &stream, data &d )
    {
        stream<<d.getData();
        return stream;
    }

У меня нет ошибки. Оператор << не меняет данные класса ... не так ли? метод getData () является постоянным </p>

Я не понимаю.

Кто-нибудь, чтобы помочь мне?

1 Ответ

0 голосов
/ 03 июля 2018

Наконец, я последую советам KubaOber (в комментариях к моим вопросам) и сделаю QDataStream составной частью моего класса вместо того, чтобы создавать подклассы QDataStream.

Спасибо KubaOber за советы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...