Я работаю с 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>
Я не понимаю.
Кто-нибудь, чтобы помочь мне?