【发布时间】:2020-05-22 07:27:33
【问题描述】:
我有这段代码会导致编译器错误提示:
Error (active) E0511 this operation on an enumerated type requires an applicable user-defined operator function
enum e{ val = 201, val2 = 11 };
for (unsigned bit = 1; e::val; e::val /= e::val2, bit <<= 1) {
std::cout << bit << std::endl;
为什么我不能做这个操作,枚举的类型是整数
【问题讨论】:
-
您正在尝试修改常量值。这回答了你的问题了吗? stackoverflow.com/questions/10305315/…
-
好的,谢谢!那么如何处理幻数呢?为了避免幻数,我可以使用什么?
-
你给他们一个名字。你的枚举和
201btw 一样神奇。试试const int some_meaningful_name = 201; -
你把事情搞混了。如果
201只是一个名为val的变量的初始化器,那么没有什么神奇的,而且你也不需要枚举。如果您添加一两行关于您实际想要实现的目标,也许会很好。 -
嗯?警告只是警告。如果这是一个错误,你应该重新配置 clang,因为它不应该是一个错误。我并不是说 Clang 不正确,一点也不。我很欣赏它的警告,考虑一下,并决定保留代码原样。 (我会将
m_n和m_d的定义放在不同的行上,但那是另一回事)
标签: c++