在命名空间中使用枚举

Using enum in namespace

本文关键字:枚举 命名空间      更新时间:2023-10-16

我在代码中使用命名空间中的枚举

namespace Statusss
{
enum  Statuss
{
Out = -1,
Ok = 0,
Busy = 1,
Error = 2,
Nor = 3
};
}

void tst()
{
int status =0;
Statusss::Statuss mystatus = static_cast<Statusss::Statuss>(status);
if (mystatus == (Statusss::Statuss::Ok))
{
std::cout << "Okn";
} else std::cout << "Othern";
}

它在简单的控制台应用程序中工作正常。但是如果我将此代码放在 GUI Qt 小部件应用程序中,则会出现错误:

'Statusss::Statuss' is not a class or namespace
if (mystatus == (Statusss::Statuss::Ok))
^

为什么我会得到这个?

该符号的正确名称是

Statusss::Ok

在传统的 C 样式枚举中,如您在此处显示的枚举,枚举类型不是作用域的一部分。