LINUX.ORG.RU

Переопределение «<<». Qt 4.3.3


0

0

project.h

#ifndef PROJECT_H #define PROJECT_H #include <QString> class Project { public: QString Title; Project(){Title = "Title Pro";} QDataStream &operator<<(QDataStream &out, const Project &pro); };

QDataStream &operator<<(QDataStream &out, const Project &pro) { out << pro.Title;//project.Title; return out; } #endif

Ошибка:

project.h:8: error: `QDataStream& Project::operator<<(QDataStream&, const Projec t&)' must take exactly one argument

main.cpp

#include "project.h"

.................................. Project pro;

.................................. QDataStream out(&file); out.setVersion(QDataStream::Qt_4_3); out << pro; ..................................

Помогите, пожалуйста ПРАВИЛЬНО переопределить "<<". Необходимо для сохранения своего типа.

Очень прошу... Не критикуйте знания С++, лучше укажите на то, что стоит изучить.

Очень буду признателен за работающий пример подобного типа)

Всем спасибо.

anonymous

Синтаксически ошибка в том, что оператору, объявленному таким образом, надо передавать три аргумента: this, out и pro. this передаётся всем функциям-членам класса неявным аргументом. Однако << --- бинарный оператор и может работать только с двумя аргументами, поэтому такое определение вводит в ступор компилятор. Решение --- вынести описание оператора из описания класса.

Jini ★★
()
Ответ на: комментарий от Jini

Спасибо... А не могли бы Вы подправить код? Как нужно сделать... Просто уже мучуюсь ужас сколько. Попробовал вынести - эффект ошибок на 2 экрана(( Можен можно Вам в аську стукнуть? Мне не у кого даже спросить по Qt ((

anonymous
()
Ответ на: комментарий от anonymous

СПАСИБО огромное!!! Методом проб и ошибок (ну и не без вашей помощи) РАЗОБРАЛСЯ!!! Всё на ура работает!!! 4е часа просидел в перечитывании перегрузки бинарных операций))

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.