假设一个类有枚举的二维vector,我想在类之外访问这个二维vector并操纵该值。我的问题是:由于我的类型(枚举类型)在类内部,我如何声明新vector以在类外部保存按值返回?我希望像Aa(5);std::vector>x=a.get_2dvec();但这给我错误说它是私有(private)的,然后如果我将类型设为公开,我将得到未声明的错误。我知道我可以放置enums{RED,BLUE,GREEN};和typedef的颜色;在类之外并取得结果,但可以说主要在不同的文件上。//f1.cpp#include#includeclassA{//Thisenumisinsideclassenu
这是演示我的问题的代码片段。namespaceN{enumE{A,B,C,D};}intmain(){usingN::E;Ee=A;//syntaxerror:'A'isnotdeclared}最后一行给我一个语法错误。我想使用名称N::A、N::B、N::C和N::D在没有命名空间限定符N::的主函数中。但是我不想做以下两件事(1)我不想说usingnamespaceN,因为那样会在N中导入其他一切。(2)我不想为枚举的每个成员说usingN::A、usingN::B等。因为如果我想修改枚举,我也必须更改我的主要功能。更不用说额外的输入既乏味又容易出错。我尝试自己寻找答案,但找不到。
我正在使用可爱的nlohmann::json编写一些JSON解析代码,为了帮助生成有用的错误消息,我自己编写了一个函数来打印JSON对象的类型。此函数接受json::value_t,这是一个枚举类,定义如下json.hpp:enumclassvalue_t:std::uint8_t{null,object,array,string,boolean,number_integer,number_unsigned,number_float,discarded};这是我的功能。我将它传递给json::value_t我希望收到一个描述它的字符串。std::stringto_string(json
以下代码:foo.h#include"bar.h"classfoo{public:enummy_enum_type{ONE,TWO,THREE};foo();~foo(){}};foo.cppfoo::foo(){inti=bar::MY_DEFINE;}酒吧.h#include"foo.h"classbar{public:staticconstintMY_DEFINE=10;foo::my_enum_typevar;bar(){};~bar(){};};让g++编译器提示my_enum_type“没有命名类型”。为什么?所有header都有多个包含定义(为清楚起见,此处未显示)。谢谢
我当前的代码类似于:enumEnum1:signed__int8{Value1=1,Value2=2,Value3=-3//C4341};错误详情状态:“警告C4341:‘Value3’:带符号的值超出枚举常量的范围”MSDN声明此警告仅在您使用int范围之外的值时发生:(>2^31)或(为什么它告诉我我的负值无效?这只是一个警告,但Google告诉我这个警告表明这些枚举值将是未定义的——这将破坏我的程序。 最佳答案 对我来说似乎是一个错误。当前的0x草案并没有表明应该是这种情况,MSDNdocumentation也没有。.
给定以下代码:enumOptions{Surf=0x01,Out=0x02};Optionsall=(Options)(Surf|Out);这个选角有问题吗?如果这个转换有意义,那为什么?根据我的理解,Options只定义了两个变量。值0x03有何意义? 最佳答案 Doesthiscastinghaveproblems?没有。Ifthiscastingmakesense,thenwhy?Basedonmyunderstanding,Optionsonlydefinestwovariables,howthevalue0x03makes
我有一个基类Shape和一些其他派生类,如Circle、Rectangle等等。这是我的基类classShape{private:enumColor{Red,Orange,Yellow,Green};protected:intX;intY;//etc...};这是我的派生类之一classRectangle:publicShape{private:intBase;intHeight;stringshapeName;//etc...};这是我调用构造函数的方式:RectangleR1(1,3,2,15,"Rectangle1");我的构造函数:Rectangle::Rectangle(in
我有一个在ClassParser中定义的structTree。我在Parser中定义了将Tree作为输入的方法。voidParser::InputTree(constTree&input){//usesdatafromTree}一切似乎都运行良好。但是后来我需要在类外使用Tree。所以我决定在一个单独的头文件中定义structTree。我将此header包含在Parser的header文件中。虽然我在Parser的头文件中没有看到错误,但源文件在我的Eclipse上显示错误。表示未找到指向方法InputTree的成员声明。我的问题是,首先,在单独的header中定义结构是否正确?第二,
我需要编写一个元编程结构,当给定一个枚举类型时,它返回该枚举的基础类型,但当给定一个整数时,它返回该整数。例如:enumEnum:short{VALUE1,VALUE2};int_type::type//->longint_type::type//->short我试过了templatestructint_type{usingtype=typenamestd::enable_if::value,typenamestd::underlying_type::type>::type;};templatestructint_type{usingtype=typenamestd::enable_i
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。当我用Java开发时,一个总是困扰我的简短问题。我实际上使用了很多不同的枚举,但我不确定应该把它们放在哪里。通常,我会创建一个名为enumeration的特殊包,我很确定这不是最佳做法。我应该将我的枚举直接放在与它最属于的类组相同的包中吗?此外,对于另一种语言(C#或C++)是否也一样?