На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Модераторы: Qraizer
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Парсим байтовый массив в динамическую структуру , byte[] в СТРУКТУРА
    Цитата Олег М @
    Надо добавить операторы вывода в поток

    ошибка
    ExpandedWrap disabled
       
      ОшибкаC2440reinterpret_cast: невозможно преобразовать "const char *" в "unsigned char *"AdmHyTechc:\users\admin\desktop\my_soft_hytech\1_hytech_консоль(2)\admhytech\main.cpp39


    ругается на все строчки где
    ExpandedWrap disabled
      out << *reinterpret_cast<signed short *>(field.m_data.data());
      Покажи код
        Цитата Олег М @
        Покажи код

        Видать у него field.m_data.data() возвращает указатель на const char*. А reinterprest_cast константность снимать не умеет. Вот и ошибки вылазят.
        Сообщение отредактировано: Flex Ferrum -
          Цитата Flex Ferrum @
          Видать у него field.m_data.data() возвращает указатель на const char*. А reinterprest_cast константность снимать не умеет. Вот и ошибки вылазят.

          Кстати, да. Надо в std::ostream &operator<<(std::ostream &out, const CField &field) везде сделать *reinterpret_cast<const ..... *>(field.m_data.data());
          Например out << *reinterpret_cast<const signed short *>(field.m_data.data());
            Олег М сделал все как Вы написали , работает но естественно не так , такая схема не пойдет , почему ?
            надо по типам раскладывать два раза
            1 раз
            ExpandedWrap disabled
              std::ostream &operator<<(std::ostream &out, const CField &field)
              {
                   switch (field.m_type)
                     {
                      case HSCLI_ET_CHAR: // 0 Массив символов длиной не более заданной
                          out << std::string(field.m_data.begin(), field.m_data.end());
                          break;


            2раз
            ExpandedWrap disabled
              std::list<CRecord> records;
              for (int i = 0; i < pStr; i++) //Пробегаем по всем строкам
              {
              ...................
              }
              Цитата kms @
              надо по типам раскладывать два раза

              Что–то насчет второго раза не понял. Где там что раскладывается?
                Цитата Олег М @
                Кстати, да. Надо в std::ostream &operator<<(std::ostream &out, const CField &field) везде сделать *reinterpret_cast<const ..... *>(field.m_data.data());
                Например out << *reinterpret_cast<const signed short *>(field.m_data.data());

                ОК сейчас попробую еще раз может че то не до курил
                  Цитата Олег М @
                  Что–то насчет второго раза не понял. Где там что раскладывается?

                  ну как бы второй раз идет преобразование или я не так понял , ок разбираюсь , пробую
                    А обновление делали?
                      Извини за запоздалый ответ
                      проблема не в заполнении массива, а в том что
                      под динамическую структуру lamp0 память выделяется
                      внутри процедуры lampReset

                      если строку
                      Код:
                        Завтра пересмотрю
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0301 ]   [ 16 queries used ]   [ Generated: 28.03.24, 21:47 GMT ]