Название: Проблема с QIODevice::open/close и Unix open/close Отправлено: kuzulis от Май 16, 2009, 22:07 Доброго времени суток!
Делаю класс наследник от QIODevice , который должен работать в Linux с файлами. Проблема в том, что в Linux в хейдере "fcntl.h" функции открытия и закрытия файлов называются: open и close, а также в QIODevice тоже есть ф-ции open и close, и поэтому возникает проблема при компиляции моего дочернего класса: Цитировать posixserialdevice.cpp: In member function ‘virtual bool TPosixSerialDevice::open(QFlags<QIODevice::OpenModeFlag>)’: posixserialdevice.cpp:113: ошибка: нет подходящей функции для вызова ‘TPosixSerialDevice::open(QByteArray, int&)’ posixserialdevice.cpp:83: замечание: претенденты: virtual bool TPosixSerialDevice::open(QFlags<QIODevice::OpenModeFlag>) posixserialdevice.cpp: In member function ‘virtual void TPosixSerialDevice::close()’: posixserialdevice.cpp:182: ошибка: нет подходящей функции для вызова ‘TPosixSerialDevice::close(int&)’ posixserialdevice.cpp:175: замечание: претенденты: virtual void TPosixSerialDevice::close() posixserialdevice.cpp: At global scope: posixserialdevice.cpp:201: ошибка: expected unqualified-id before ‘/’ token posixserialdevice.cpp:201: ошибка: expected constructor, destructor, or type conversion before ‘/’ token make: *** [build/obj/posixserialdevice.o] Ошибка 1 [den@myhost src]$ т.е. мне нужно чтобы работал примерно вот такой код: Код: /*! где TPosixSerialDevice - класс наследник от QIODevice !!! Название: Re: Проблема с QIODevice::open/close и Unix open/close Отправлено: Rcus от Май 16, 2009, 22:19 "::close"?
А чем QFile не понравился? Название: Re: Проблема с QIODevice::open/close и Unix open/close Отправлено: kuzulis от Май 16, 2009, 22:34 Цитировать "::close"? Не хочу лишнее А чем QFile не понравился? единственное что приходит в голову - это создать какой нибудь файл convert.h c таким содержанием Код: #include <fcntl.h> /* File control definitions */ и потом уже подключать convert.h к хейдерам где есть класс QIODevice и вызывать ф-ии new_open и new_close Название: Re: Проблема с QIODevice::open/close и Unix open/close Отправлено: Rcus от Май 16, 2009, 22:47 Не хочу лишнее В таком случае могу посоветовать C90 :)Название: Re: Проблема с QIODevice::open/close и Unix open/close Отправлено: Авварон от Май 16, 2009, 22:49 обожаю людей, изобретающих велосипед...
попробуй namespace abc{ #include <fcntl>}. Если не поможет, то через доп файл Название: Re: Проблема с QIODevice::open/close и Unix open/close Отправлено: kuzulis от Май 16, 2009, 23:24 а могу сделать так:
Код: #define open new_open ??? через namespace abc{ #include <fcntl>} не получается Название: Re: Проблема с QIODevice::open/close и Unix open/close Отправлено: Авварон от Май 16, 2009, 23:31 проверил:
Код: class MainWindow : public QMainWindow Код: #include "mainwindow.h" Название: Re: Проблема с QIODevice::open/close и Unix open/close Отправлено: kuzulis от Май 16, 2009, 23:53 хм, пока что я сделал так:
Код: #include <fcntl.h> //тут определены open и close но с пространством имен еще раз сейчас проверю Название: Re: Проблема с QIODevice::open/close и Unix open/close Отправлено: kuzulis от Май 17, 2009, 00:07 сделал так:
Код: namespace abc //serial device i/o "прокатил" только вызов open. вызовы close, read, write выдали ошибки: Цитировать ... ... posixserialdevice.cpp:182: ошибка: ‘close’ не является элементом ‘abc’ ... ... Название: Re: Проблема с QIODevice::open/close и Unix open/close Отправлено: Авварон от Май 17, 2009, 00:16 дейстаительно... странно это, ну да ладно:) зато работает, как написано во 2м посте
Код: ::open("lol", 0); Название: Re: Проблема с QIODevice::open/close и Unix open/close Отправлено: lit-uriy от Май 17, 2009, 02:56 >>if (close(fd)==-1) { <<<<<< ВОТ ТУТ КОМПИЛЯТОР НЕ ЗНАЕТ КАКУЮ ФУНКЦИЮ ПОДСТАВИТЬ !!!
а тут чья функция? (я тоже не знаю) Название: Re: Проблема с QIODevice::open/close и Unix open/close Отправлено: Авварон от Май 17, 2009, 08:56 unistd.h -> int close(int d); d - дескриптор
Название: Re: Проблема с QIODevice::open/close и Unix open/close Отправлено: kuzulis от Май 17, 2009, 14:13 :)
спасибо всем! сделал как сказано в посте №2 и вроде ругаться компилятор перестал! можно ставить тег [РЕШЕНО] :) |