C++ Enum in struct error for definition

C++ Enum in struct error for definition

你好,我是 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;

我在 row->attrib = Attributes::_UNSIGNED;

上遇到错误

不知道这个错误。 谁是正确的解决方案?

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

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

row->attrib = _UNSIGNED;

对于范围枚举,您可能希望使用 C++11 的 enum class

P.S. 另请注意,_Upper(下划线后跟大写字母)名称是 保留的实现,不应在您的代码中使用。