你好,我是来自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;
没有想到这个错误。 谁是正确的解决方案?
答案 0 :(得分:1)
enum Attributes { _BINARY = 0x26, _UNSIGNED = 0x27 }; ... row->attrib = Attributes::_UNSIGNED;
我的通灵调试能力;)告诉我问题是_UNSIGNED
符号不在Attributes
的范围内,所以你应该能够这样做:
row->attrib = _UNSIGNED;
对于范围内的枚举,您可能需要使用C ++ 11 enum class
。
PS 另请注意,_Upper
(下划线后跟大写字母)名称保留用于实现,不应在代码中使用。