Я хочу присвоить «paramControlHeight», который находится внутри моего перечисления, другое значение. Так, например, он начинается с 40, но я хотел бы изменить его на 80 позже
Вы, похоже, неправильно поняли, что такое перечисления. Вы, кажется, ожидаете, что перечисление будет вести себя так
struct face
{ int paramControlHeight = 40;
int paramLabelWidth = 80;
int paramSliderWidth = 300;
};
face f; // create instance
f.paramControlHeight = 40; // modify member
Однако перечисление скорее похоже на
struct face
{
static const int paramControlHeight = 40;
static const int paramLabelWidth = 80;
static const int paramSliderWidth = 300;
};
Теперь вернемся к вашему фактическому перечислению:
enum face
{ paramControlHeight = 40,
paramLabelWidth = 80,
paramSliderWidth = 300
};
Здесь paramControlHeight
- перечислитель со значением 40
. Вы не можете изменить его. Он не предназначен для изменения. Он предназначен для перечисления. Что вы можете сделать, это:
face f{ paramControlHeight }; // create instance of face
f = paramSliderWidth; // assign a different value to it
Более типичное перечисление будет
enum face_parts {
nose = 1,
eye = 2,
mouth = 3
};
То, что вы можете использовать вот так
void print_face_part( face_parts fp ){
if (fp == nose) std::cout << "nose";
if (fp == eye) std::cout << "eye";
if (fp == mouth) std::cout << "mouth";
}
Проще говоря позволяет вам называть и группировать константы. Обратите внимание, что начиная с C ++ 11 есть перечислимых областей , которые являются более гибкими и не вводят имя перечислителей во вложенном пространстве имен.