pasagir
27 августа 2018 г. 20:15

Qt Creator 4.6.2 и C++17

Qt Creator, С++, qt

Вопрос о новом стиле записи в Qt Creator 4.6.0 по "старому стилю" настройка COM-порта проводилась следующим образом
settings.name        = name;
settings.baudRate    = (QSerialPort :: BaudRate)baudrate;
settings.dataBits    = (QSerialPort :: DataBits)DataBits;
settings.parity      = (QSerialPort :: Parity)Parity;
settings.stopBits    = (QSerialPort :: StopBits)StopBits;
settings.flowControl = (QSerialPort :: FlowControl)FlowControl;

но нынешние Qt Creator 4.6.2 и 4.7.0  ругаются ипишут
use old-style cast

как это записать по-новому?




3

Вам это нравится? Поделитесь в социальных сетях!

5
Evgenii Legotckoi
  • 27 августа 2018 г. 20:23

Вы используете C-style касты, они в принципе устарели ещё несколько стандартов назад.

Нужно использовать static_cast, думаю, что так не должно ругаться на старый стиль
settings.baudRate    = static_cast<QSerialPort::BaudRate>(baudrate);

    pasagir
    • 27 августа 2018 г. 20:39
    • (ред.)

    Спасибо, иеще вопрос как новыми стандартами записать следующую вещь

    #define SB 0xAA;
    
    QByteArray dataTx;
    
    dataTx[i] = SB;                                 implicit conversion changes signedness: 'int' to 'char'


      kramp18
      • 28 августа 2018 г. 13:02
      dataTx[i] = static_cast<QByteArray>(SB); 

      Попытайтесь так
        Evgenii Legotckoi
        • 28 августа 2018 г. 13:25

        Здесь должно вот так сработать

        dataTx.append(QByteArray::number(SB));

        Просто в случае этого варианта

        dataTx[i] = SB; 

        Нужно, чтобы память была выделена в этом QByteArray через метод QByteArray::resize
          pasagir
          • 28 августа 2018 г. 14:10

          Спасибо

            Комментарии

            Только авторизованные пользователи могут публиковать комментарии.
            Пожалуйста, авторизуйтесь или зарегистрируйтесь