Как перегрузить оператор <<

программирование C++ qt

Хочу создать класс, объектам которого можно было бы передавать данные посредством операции <<
Пишу код
class MyCryptographicHash : public QCryptographicHash
{
public:
MyCryptographicHash(Algorithm method);

void addData(const QString &data );

friend MyCryptographicHash& operator<< (MyCryptographicHash &obj, const QString &value);

private:
QByteArray _data;
};

MyCryptographicHash& operator<<(MyCryptographicHash &obj, const QString &value) {
obj.addData(value);
return obj;
}
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
MyCryptographicHash *hash = new MyCryptographicHash(QCryptographicHash::Sha1);
QString a = "string";
hash << a;
qDebug() << "HASH: " << hash1->result();
}

Но получаю ошибку:
error: no match for 'operator<<' in 'hash << a'

Примечание:
Проблема была в том, что я вместо

MyCryptographicHash hash(QCryptographicHash::Sha1);
писал

MyCryptographicHash *hash = new MyCryptographicHash(QCryptographicHash::Sha1);

Получалось, что нужно было писать в случае, что я описал

(*hash) << a;
Ответы:
Попробуй определить прототип перегруженного оператора ранее описания класса.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.