Быстрый NHibernate, varbinary (макс.) и SQLite

Причина Вы не можете расширить Перечисления, состоит в том, потому что она привела бы к проблемам с полиморфизмом.

Говорят, что Вы имеете перечислимый MyEnum со значениями A, B, и C, и расширяете его с помощью значения D как MyExtEnum.

предположим метод ожидает значение myEnum где-нибудь, например, в качестве параметра. Должно быть законно предоставить значение MyExtEnum, потому что это - подтип, но теперь что Вы собираетесь сделать, когда это складывается, значение является D?

Для устранения этой проблемы расширение перечислений недопустимо

7
задан Charles Ouellet 15 November 2009 в 06:10
поделиться

1 ответ

Цитирование стандарта дает то, что определено как «правильный ответ», но на самом деле это не отражает как обычно пишутся программы.

Люди все время делают предположения, что char - это 8 бит, short - 16, int - 32, long - 32 или 64, а long long - 64.

Эти предположения - не лучшая идея, но вас не уволят за их принятие.

Теоретически может использоваться для указания типов с фиксированной разрядностью, но вам нужно найти его для Microsoft. ( См. Здесь MS stdint.h .) Одна из проблем здесь состоит в том, что C ++ технически нуждается только в совместимости с C89, чтобы быть соответствующей реализацией; даже для простого C C99 не поддерживается полностью даже в 2009 году.

Также неверно сказать, что для char нет спецификации ширины. Да, в стандарте просто не говорится, подписан он или нет. Вот что на самом деле говорит C99:

4
ответ дан 7 December 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: