Массивоподобная функциональность с r-значениями - PullRequest
0 голосов
/ 16 декабря 2018

Я писал простой класс cFlags, который предназначен для хранения логических флагов в отдельных переменных, в отличие от создания нескольких bools (каждый из которых занимает один байт памяти).Все работает хорошо, но я столкнулся с этой проблемой, пытаясь упростить установку значений флагов.Пропуская ненужные части, мой код выглядит следующим образом:

template <typename T>
cFlags
{
    public:
        bool get(char flag);
        void set(char flag, bool value);

    private:
        T flags_;
};

Созданный класс содержит переменную-член типа шаблона и позволяет управлять своими битами с помощью методов set () и get () (аргументы char соответствуют конкретнымбиты в элементе flags_).

Теперь у меня возникла идея, что я должен сделать перегрузку оператора [], чтобы упростить установку и получение значений флага.Проблема в том, что я не смог найти способ сделать такие вещи, как

cFlags<char> flags;
flags[0] = true;

возможными, так как перегрузка оператора [] возвращает только логическое значение r, которое соответствует тому, горит ли бит или нет.Как мне реализовать такую ​​функциональность, которую я могу сделать, например, примерно так:

cFlags<char> flags;
flags[0] = true;
if (flags[0]) {
    std::cout << "Bit 0 is active!";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...