如何解决以下与枚举相关的错误
how to resolve following enum related error?
在abc.h文件中,我有:
class a
{
public:
enum RTDFmodes {
verbose,
NONE,
};
class b
{
friend class a;
public:
RTDFmodes _verbose_mode;
b(RTDFmodes verbose)
{
_verbose_mode=verbose;
}
};
};
在abc.cpp中,我有:
int main()
{
a::RTDFmodes verbose;
a::b x(verbose);
return 0;
}
当我运行错误时,出现"verbose正在使用而未初始化"。请帮助解决如何删除此错误。
您意识到您在三个不同的地方使用术语verbose
,对吧?枚举值verbose
的名称与b函数的参数以及main():中的a::RTDFmodes实例的名称相同
enum RTDFmodes {
verbose, // constant enum value
和
b(RTDFmodes verbose) // local variable in b() named verbose
和
a::RTDFmodes verbose; // local variable in main() named verbose
如果您希望verbose命名枚举值,则需要更改其他两个:
b(RTDFmodes mode) // the argument is now named mode and can contain the value 'verbose'
a::RTDFmodes mode = a::RTDFmodes::verbose; // mode contains the value 'verbose'
NONE
后面还有一个逗号,但后面没有:
enum RTDFmodes {
verbose,
NONE, // Right here
};
关于您的特定错误,您在main中声明的verbose
在您将其传递给b的构造函数之前从未初始化,该构造函数将其数据成员分配给它
对于未来,我建议首先切换到C++11强类型枚举,然后阅读枚举是什么以及如何使用它们,因为您似乎很困惑。
相关文章:
- 错误:从"int"到枚举c++的转换无效
- C++:枚举:错误:应使用标识符而不是"}"
- 无法找到简单的开关大小写枚举错误
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 错误:表达式必须具有算术、无作用域枚举或带有运算符重载的指针类型
- C++/错误:表达式必须具有整数或无作用域枚举类型
- 如何摆脱C++中的枚举不匹配错误?
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- 枚举输出的值错误
- 枚举成员不是类型错误
- C++ Visual Studio 调试器枚举错误
- 比较枚举的值会给出编译器错误
- C++中一个非常简单的枚举类错误
- 如何编写一个错误结构,该结构可以包含不同的强键枚举作为错误代码
- Bjarne Stroustrup PPP - 第 9 章 演练 4 - cout 枚举错误
- 错误:以增量方式填充向量时,表达式必须具有整数或无作用域枚举类型
- c++开关枚举错误
- OpenGL 创建 glShaderObject 时出现无效枚举错误
- 从limemmicro编译lms6suite时出现枚举错误
- 试图读取枚举状态时c++枚举错误