ЗЫ: и парни, разберитесь досконально в исходниках, перед тем как что-то советовать (это камень к пастору)
.
Совершенно необоснованный ничем камень в мою сторону. Я так понимаю b-s-a понял очем речь. При одинаковых именах отпадает надобность в методе create() и впринципе в наследовани. Но это всего другой подход к решению одной и тойже задачи.
ЗЫ: А исходники я конечно смотрел.
Вот короткая иллюстрация:
serialport_p.h
C++ (Qt)
class SerialPortPrivate
{
public:
// some common methods
...
#ifdef Q_WS_WIN
//some windows specified methods
#endif
#ifdef Q_WS_MAC
//some mac specified methods
#endif
#ifdef Q_WS_X11
//some unix specified methods
#endif
....
private:
// some common data
};
В файле serialport.cpp будет находится общая для всех платформ реализация методов.
В фалах serialport_win.cpp, serialport_mac.cpp, serialport_unix.cpp будет находиться реализация этих методов для каждой платформы
Ну и наконец
C++ (Qt)
SerialPort::SerialPort(QObject *parent)
: QIODevice(parent)
, d_ptr(new SerialPortPrivate(this))
{}
создавал бы все что нужно вне зависимости от платформы.
В качестве примера можно рассмотреть qthread класс.
ЗЫЫ: Чтобы не перегружать serialport_p.h специфическими для платформы вспомогательными методами, их можно вынести в соотвествующее cpp файлы и оформить как статические функции.