Я пытаюсь присвоить уникальное значение членам const static unsigned int
, не задумываясь о том, чтобы сами присваивать правильные значения (предотвращая человеческие ошибки). Я создал минимальное решение для static unsigned int
, но я бы очень хотел использовать const
, потому что он быстрее (и аккуратно).Как назначить const static с инкрементным макросом?
Это то, что я придумал:
// cat.h
#define ANIMAL_INDEX 0
#define GET_ANIMAL_INDEX (ANIMAL_INDEX (ANIMAL_INDEX + 1))
class Cat
{
protected:
Cat(){}
public:
const static unsigned int lynx = GET_ANIMAL_INDEX; // 0
const static unsigned int tiger = GET_ANIMAL_INDEX; // 1
};
Это просто пример, но представьте себе, что я бы как 1000 животных или что-то.
Возможно ли создать макрос, который увеличивается каждый раз, когда он используется для назначения, или мне нужно создать скрипт, который генерирует cat.h
?
Это действительно то, что [* перечислений *] (http://en.cppreference.com/w/cpp/language/enum) для. –
@Someprogrammerdude Я хочу создать сложное перечисление, способное наследовать. Класс dog.h имел бы константы, которые не имеют того же значения, что и константы в классе cat.h. Таким образом, я мог бы назвать Animal :: lynx и Animal :: corgi без конфликтов значений. – oddRaven
Какое у вас есть решение? Это не может быть код в вашем вопросе, так как этот код ошибочен. Требование вашего комментария важно и должно быть в самом вопросе. – rici