在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;
}
当我正在运行时出现错误“正在使用详细信息而未进行初始化”。 请帮助解决如何删除此错误。
答案 0 :(得分:1)
你意识到你在三个不同的地方使用了verbose
这个词,对吧?枚举值verbose
的命名与b函数的参数相同,以及main()中:: 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
如果你想要详细命名枚举值,那么你需要改变另外两个:
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强类型枚举,然后阅读枚举是什么以及如何使用它们,因为你似乎很困惑。