![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
eugrita |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 19.6.2014 Пользователь №: 4172 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Работаю на QT 4.2 Не получается
Есть структура
Надо несколько таких записей записать в бинарный файл, потом считать в ОП. Данная структура содержит текстовые поля фиксированной длины Пытаюсь делать переопределением операторов потокового вывода и ввода для записи так
компилятор не находит ошибок, файл создается, что-то туда пишется А для чтения пытаюсь так
или так (не очень представляю смысл 2-го параметра в readBytes)
компилятор выдает: invalid conversion from char * to char * error initializing argument 1 of ... Обращаю внимание мне уже сделали замечание, что сигнатура оператора readBytes QDataStream & QDataStream::readBytes ( char *& s, uint & l ) поэтому 2-е переопределение имеет параметры Цитата QDataStream& operator >>(QDataStream &st, TComp &a) а не
но это не помогло (хотя при чтении компилятор проглотил с const) 2)почему-то у меня компилятор не понимает синтаксис a.array как написано здесь |
|
|
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
типы char* и char[] в С и С++ - это разные типы. иногда компилятор их не приводит друг к другу.
хотя обычно компилятор на это ругается только при передаче параметра в функцию, а приведение к указателю он вроде должен и так сожрать. короче говоря, лучше сделать так:
P.S. и это вопрос не по Qt, а по C++ Сообщение отредактировал Iron Bug - 20.6.2014, 8:00 |
|
|
Iron Bug |
![]()
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
на самом деле, если бы это был С++11 совместимый компилятор и там бы стояла такая конструкция:
то есть rvalue reference вместо lvalue reference, то тогда бы компилятор сожрал это без всяких преобразований. я не знаю, компилится ли Qt под стандарт С++11 и используются ли там rvalue reference параметры. Сообщение отредактировал Iron Bug - 20.6.2014, 8:58 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 18.2.2025, 21:53 |