BlinCT
July 30, 2019, 2:17 a.m.

Определение типа структуры

C++

Всем привет.
В метод передается несколько вариантов структуры. Но принимается как void*
Не спрашивайте почему, я знаю это трешь.
Но все таки, думаю как определить тим структуры что прилетел в метод.
Нашел вроде бы то что надо, С++
Но чет не получается.

  1. void set_data_in(unsigned char op, void* buf, unsigned size)
  2. {
  3. opcode = op;
  4.  
  5. const std::type_info& ti1 = typeid(nvme_id_ctrl);
  6. const std::type_info& ti2 = typeid(nvme_id_ns);
  7. const std::type_info& ti3 = typeid(buf);
  8.  
  9. if (ti1.hash_code() == ti3.hash_code())
  10. {
  11. ctrl_buffer = static_cast<nvme_id_ctrl *>(buf);
  12. }
  13. else if (ti2.hash_code() == ti3.hash_code())
  14. {
  15. ns_buffer = static_cast<nvme_id_ns *>(buf);
  16. }
  17.  
  18. m_size = size;
  19. }

Может кто подсказать туда ли я начал копать и может я в чем то ошибаюсь чтоыб определить что за структура скрывается в аргументе?
Спасибо.

3

Do you like it? Share on social networks!

3
Alexander
  • July 30, 2019, 11:12 a.m.

ну я бы пошел лучше через шаблоны, такой вопрос а зачем вообще так.что в итоге хочешь получить?

    BlinCT
    • July 30, 2019, 12:41 p.m.

    Шаблоны не вариант, потому что только в 2 естах такой трешь происходит. Это надо мне чтобы проект который рабочий но в ужасном состоянии кода пытаюсь переписать. И это мне бы давало возможность при том же дебаге видить типы и структуры что летят.

      Evgenii Legotckoi
      • July 30, 2019, 12:56 p.m.

      Ну так у тебя же в документации написано, что у std::type_info есть метод name(), используй его.

        Comments

        Only authorized users can post comments.
        Please, Log in or Sign up
        • Last comments
        • AK
          April 1, 2025, 11:41 a.m.
          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
        • Evgenii Legotckoi
          March 9, 2025, 9:02 p.m.
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
        • VP
          March 9, 2025, 4:14 p.m.
          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
        • ИМ
          Nov. 22, 2024, 9:51 p.m.
          Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
        • Evgenii Legotckoi
          Oct. 31, 2024, 11:37 p.m.
          Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup