草庐IT

c++ - typedef'ing enum 不会使 enum-values 可见

我有一个类,其中有一个枚举,定义如下:classX{public:enumDirection{DIR_LEFT,DIR_RIGHT};};现在我希望在另一个类中重用这个枚举,如下所示:classY{public:typedefX::DirectionDirection;};正如预期的那样,使用Y::Direction可以正常工作,例如:voidmyFunction(Y::Directiondir){}但枚举中的值似乎没有与typedef一起“复制”。如果我编写以下内容,则会出现编译错误:myFunction(Y::DIR_LEFT);相反,我不得不再次引用枚举的原始位置,像这样:myF

c++ - typedef'ing enum 不会使 enum-values 可见

我有一个类,其中有一个枚举,定义如下:classX{public:enumDirection{DIR_LEFT,DIR_RIGHT};};现在我希望在另一个类中重用这个枚举,如下所示:classY{public:typedefX::DirectionDirection;};正如预期的那样,使用Y::Direction可以正常工作,例如:voidmyFunction(Y::Directiondir){}但枚举中的值似乎没有与typedef一起“复制”。如果我编写以下内容,则会出现编译错误:myFunction(Y::DIR_LEFT);相反,我不得不再次引用枚举的原始位置,像这样:myF

c++ - 枚举结构和枚举类有什么区别?

看enumdocumentation,我注意到一件事:enum-key-oneofenum,enumclass(sinceC++11),orenumstruct(sinceC++11)enum和enumclass,当然可以,但是enumstruct是什么?文档似乎说enumclass和enumstruct完全相同:[...]scopedenumeration(declaredwiththeenum-keyenumclassorenumstruct)enumstruct|classname{enumerator=constexpr,enumerator=constexpr,...}[..

c++ - 枚举结构和枚举类有什么区别?

看enumdocumentation,我注意到一件事:enum-key-oneofenum,enumclass(sinceC++11),orenumstruct(sinceC++11)enum和enumclass,当然可以,但是enumstruct是什么?文档似乎说enumclass和enumstruct完全相同:[...]scopedenumeration(declaredwiththeenum-keyenumclassorenumstruct)enumstruct|classname{enumerator=constexpr,enumerator=constexpr,...}[..

c++ - is_enum 实现

我正在尝试实现std::is_enum.到目前为止,这是我的代码:templatestructis_enum{staticboolvalue;};templateboolis_enum::value=false;templatestructis_enum{staticboolvalue;};templateboolis_enum::value=true;此代码会导致错误。更准确地说:g++-std=c++0x-Wall-o"enum2""enum2.cpp"(indirectory:/home/aristophanes/Desktop/C++)Compilationfailed.enu

c++ - is_enum 实现

我正在尝试实现std::is_enum.到目前为止,这是我的代码:templatestructis_enum{staticboolvalue;};templateboolis_enum::value=false;templatestructis_enum{staticboolvalue;};templateboolis_enum::value=true;此代码会导致错误。更准确地说:g++-std=c++0x-Wall-o"enum2""enum2.cpp"(indirectory:/home/aristophanes/Desktop/C++)Compilationfailed.enu

c++ - 在类型特征中,为什么人们使用 enum 而不是 static const 作为值?

例如,我就是这样写的,它编译和工作得很好:templatestructis_pointer{staticconstboolvalue=true;}那为什么有些人写的不那么明显templatestructis_pointer{enum{value=true};}相反?仅仅是因为staticconst变量使用了一个字节的内存,而enum没有? 最佳答案 一个显着的区别在于以下代码的编译和链接:templatestructis_pointer{};templatestructis_pointer{enum{value=true};};vo

c++ - 在类型特征中,为什么人们使用 enum 而不是 static const 作为值?

例如,我就是这样写的,它编译和工作得很好:templatestructis_pointer{staticconstboolvalue=true;}那为什么有些人写的不那么明显templatestructis_pointer{enum{value=true};}相反?仅仅是因为staticconst变量使用了一个字节的内存,而enum没有? 最佳答案 一个显着的区别在于以下代码的编译和链接:templatestructis_pointer{};templatestructis_pointer{enum{value=true};};vo

c++ - “enum class”的递增和递减

众所周知,C++03中enum的递增和递减是非法的,因为C++03的enum可能不是连续的。但是C++11标准引入了新的enumclass构造,根据Wikipedia的说法,它更加类型安全,因为它不是建立在任何简单的可数类型上的。所以现在,如果我们有一个枚举值的有界列表,我们可以写类似enumclassColors{Black,Blue,White};//...Colorscolor=Colors::White;color++;它会正常工作吗(例如,增加White将返回Black并且减少Black将返回White)?如果我们不能编写这样的代码,您是否知道boost或Qt中的任何类似行为

c++ - “enum class”的递增和递减

众所周知,C++03中enum的递增和递减是非法的,因为C++03的enum可能不是连续的。但是C++11标准引入了新的enumclass构造,根据Wikipedia的说法,它更加类型安全,因为它不是建立在任何简单的可数类型上的。所以现在,如果我们有一个枚举值的有界列表,我们可以写类似enumclassColors{Black,Blue,White};//...Colorscolor=Colors::White;color++;它会正常工作吗(例如,增加White将返回Black并且减少Black将返回White)?如果我们不能编写这样的代码,您是否知道boost或Qt中的任何类似行为