и более выразительного нейминга.
class Packet{
public:
bool load(std::uint8_t* buf, std::size_t size);
struct Offset {
Offset() = delete;
static inline std::size_t Address = 0;
static inline std::size_t Type = 4;
static inline std::size_t Num = 6
static inline std::size_t Payload = 8;
};
struct Header {};
using Payload = std::vector<std::uint8_t>;
Payload getPayload() const;
};
Есть вариант на enum
struct Offset {
Offset() = delete;
enum Value {
Address = 0,
Type = 4,
Num = 6,
Payload = 8,
};
}
можно было бы использовать enum class, но кастить лениво(зачастую нужно приводить к int).
Насколько это "неправильно"?
Во-первых, подозреваю что вы выбрали неправильный чат. Прочтите описание чата. Во-вторых... а как вы это применяете? Выглядит как переизобретение битовых полей.
Ну если эти переменные у тебя нужны для применения как смещения - то нормально, что плохого то ?
Ну скажем не правильнее ли вынести эти константы из класса с префиксом. И в обще использую структуры не по назначению("изобрел" неймспейсы для классов)
Ну это уже "нюансы" реализации. Я про сам факт таких констант.
class Packet{ public: bool load(std::uint8_t* buf, std::size_t size); struct Offset { Offset() = delete; static constexpr std::size_t Address = 0; static constexpr std::size_t Type = 4; static constexpr std::size_t Num = 6 static constexpr std::size_t Payload = 8; }; struct Header {}; using Payload = std::vector<std::uint8_t>; Payload getPayload() const; };
Обсуждают сегодня