我有一个快速的代码片段:
#include<iostream>
using namespace std;
enum class A:int {
u=1,
v=2,
w=3
};
template<A value>
int nextEnum(){
return value+1;
}
int main() {
nextEnum<A::u>();
return 0;
}
无法编译:
clang++ testenum.cpp -std=c++11
testenum.cpp:10:17: error: invalid operands to binary expression ('A' and 'int')
return value+1;
好吧,我已经宣布A为&#34; int&#34;枚举,为什么它没有&#34; +&#34;用int?如何解决?
答案 0 :(得分:4)
无法将enum class
隐式转换为整数。您必须使用static_cast
,例如:
template <A value>
A nextEnum() {
return static_cast<A>(static_cast<int>(value) + 1);
}
答案 1 :(得分:2)
枚举类是强类型的,不会隐式转换为int。为此,您需要定义转换为int或&#39; +&#39;你的枚举类中的运算符。
答案 2 :(得分:0)
添加
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:fontFamily="@font/dancing_script"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
将修复此错误!测试在Windows VS2017上通过