我是C ++的初学者,如果这很明显,我感到很抱歉,但是将值分配给枚举存在问题。我已经在头文件中声明了枚举:
enum face
{ paramControlHeight = 40,
paramLabelWidth = 80,
paramSliderWidth = 300
};
并尝试分配一个整数。不用说这是行不通的:
paramControlHeight = 40;//Not assignable
搜索了一段时间后,我尝试了:
using type_of_p=decltype(paramControlHeight);
据我所知,应该产生paramControlHeight的类型,并允许我使用
paramControlHeight=static_cast<type_of_p> (40);
但是我收到相同的“无法分配”错误
如果有人能指出正确的方向,我将不胜感激
答案 0 :(得分:2)
我想为枚举内的“ 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起,scoped enums更加灵活,并且没有在封闭的名称空间中引入枚举器的名称。
答案 1 :(得分:1)
paramControlHeight
,paramLabelWidth
,paramSliderWidth
是值。除了为42
分配值以外,您不能给它们分配其他任何东西。