用于定义的结构错误中的C ++枚举

时间:2016-10-28 10:04:16

标签: c++ struct enums

你好,我是来自C ++的新手。 对于我的项目,我需要使用类似C#示例的枚举值。

我的结构

struct Rows
{
    string name;
    bool primaryKey;
    int lenght;
    string defined;
    MyLDC::Attributes attrib;
    bool Nullable;
    bool AutoIncrement;
    string comment;

};
Rows rw;
Rows* row = &rw;

MyLDC ::属性

enum Attributes
{
    _BINARY = 0x26,
    _UNSIGNED = 0x27
};

我的示例功能

void MyLDC::CreateTable(string tablename,string primaryKey)
{

    //Simple Row Implementation
    row->name = "Example Row";
    row->AutoIncrement = true;
    row->primaryKey = true;
    row->comment = "Example Row";

    row->attrib = Attributes::_UNSIGNED;

我在行上遇到错误 - > attrib = Attributes :: _ UNSIGNED;

没有想到这个错误。 谁是正确的解决方案?

1 个答案:

答案 0 :(得分:1)

enum Attributes
{
    _BINARY = 0x26,
    _UNSIGNED = 0x27
};
...
row->attrib = Attributes::_UNSIGNED;

我的通灵调试能力;)告诉我问题是_UNSIGNED符号不在Attributes的范围内,所以你应该能够这样做:

row->attrib = _UNSIGNED;

对于范围内的枚举,您可能需要使用C ++ 11 enum class

PS 另请注意,_Upper(下划线后跟大写字母)名称​​保留用于实现,不应在代码中使用。