Как стать автором
Обновить
9
0
Oleg Vorobiov @isnullxbh

C++ Software Developer

Отправить сообщение

С помощью этой команды мы можем только перезаписать всю таблицу целиком, а мне хотелось бы создавать разделы по одному, по мере необходимости.
P.S. Пока обошелся созданием вирутальных дисков (vmkfstools -c).

partedUtil setptbl
А можно создать один раздел, а не перезаписывать всю таблицу целиком?

Включаешь в ней виртуалку Hyper-V и запускай WinXP

А есть что-нибудь без гипервизора? Я не хочу систему в пробирке запускать, хотелось бы на голое железо.

Никто не встречал SBC, на который можно Windows XP накатить?

мой любимый пример это конечно посчитать число полей в произвольной структуре, ну только публичных понятное дело и не юнионов и не битовых полей

Поделитесь ссылкой?

Я не преследую цели вести с Вами спор, я пытаюсь объяснить причину, по которой я решил сделать деструктор невиртуальным. И на мой взгляд, для того, чтобы это понять, не нужны не книжки Александреску (ничего против него не имею, просто миксины, как мне кажется, оттуда), не нужен Rust, статические деструкторы и все то, что Вы упоминали выше.

Хорошо, спасибо! Если у меня позже возникнут вопросы, можно будет написать Вам в лс?

А что значит «несогласован»? Интерфейс предоставляет библиотека, и она же предоставляет другие компоненты, которые работают с этим интерфейсом. Если пользователь решил использовать интерфейс не по назначению — вопросы к пользователю.


Почему деструктор не public? А зачем ему таким быть? Хорошо, давайте его сделаем public — и будем где-то в куче хранить объекты производных классов, а что мы с ними будем делать — сериализовать и десериализовать?

читается привычнее?

Субъективно.


Извините за столь короткий ответ: мне так нравится.

Взято с https://en.cppreference.com/w/cpp/iterator/size:


template <class C>
constexpr auto size(const C& c) -> decltype(c.size());

Посмотрите на тип возвращаемого значения — оно выводится через size.

Спасибо за информацию! Не хотите об это более подробно рассказать, с техническими деталями? Лично мне было бы очень интересно почитать.

существует структура-двойник, который используется только для передачи данных и состоит из открытых полей

Похоже на описание DTO


Что если сериализовать необходимо в разные форматы, например, бинарный, json, xml и тот же protobuf?

Спасибо, что указали на данную проблему, это интересно.


Кроме того, есть еще одна важная задача: если сериализуемые данные достаточно сложны, необходимо обеспечивать сохранение и восстановление ссылок между объектами

Это уже больше на репликацию похоже.

Используем позднее связывание и указатель на базовый класс — деструктор должен быть виртуальным, хотя бы на всякий случай.

А что за случай? Конкретно? Удаление по указателю на базовый класс? Так у Вас даже код не скомпилируется, ведь деструктор — protected.


Используем полиморфизм времени компиляции. Базовый класс тут не нужен, современный C++ позволяет использовать концепты и т.д.

Соглашусь, можно было использовать концепты. Но я захотел наследование.


Нам нужен полиморфирм, но мы хотим за счет позднего связывания избежать...

Без комментариев.

А почему Вы решили, что я создаю объекты подобным образом?
Вы говорите о следующем:
ISerializable* ptr = new UserInfo();
Разве Вы видели, чтобы я в коде таким образом использовал ISerializable?


Простите, какой крестик я должен снять?

Т.е. Вы нигде не используете указатель на базовый класс и не удаляете объект производного класса через указатель на базовый?

Нет, я не удаляю объекты классов-наследников ISerializable через указатель на ISerializable.


А зачем тогда виртуальные функции-члены, если у Вас каждый тип конкретный?

Каждый — это какой?

1

Информация

В рейтинге
Не участвует
Откуда
Барнаул, Алтайский край, Россия
Дата рождения
Зарегистрирован
Активность