假设我们有enum以下内容:
enum Days {Saturday, Sunday, Tuesday, Wednesday, Thursday, Friday};
Run Code Online (Sandbox Code Playgroud)
我想创建一个这样的实例enum并用适当的值初始化它,所以我做:
Days day = Days.Saturday;
Run Code Online (Sandbox Code Playgroud)
现在我想用现有enum值检查我的变量或实例,所以我这样做:
if (day == Days.Saturday)
{
std::cout << "Ok its Saturday";
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个编译错误:
错误:'.'之前的预期primary-expression 代币
所以要说清楚,说:有什么区别:
if (day == Days.Saturday) // Causes compilation error
Run Code Online (Sandbox Code Playgroud)
和
if (day == Saturday)
Run Code Online (Sandbox Code Playgroud)
?
这两个实际上是指什么,一个是好的,一个导致编译错误?
我在头文件中声明了一个枚举(称为Direction):
enum Direction {LEFT, RIGHT};
Run Code Online (Sandbox Code Playgroud)
然后,我有一个构造函数,它接受一个Direction值并将其设置为另一个Direction变量(stringDirection).
bool InformationWidget::move(Direction direction){
stringDirection=direction;
return true;
}
Run Code Online (Sandbox Code Playgroud)
最后,我有一个if语句来检查它的值:
if (stringDirection == Direction::RIGHT)
Run Code Online (Sandbox Code Playgroud)
这就是我收到错误的地方,那个if语句..任何想法?我试着环顾前面的线程,但没有找到任何有用的东西.
谢谢!
编辑:
这是我的文件:
Widget.h
enum class Direction {LEFT, RIGHT};
class Widget {
public:
virtual bool...
...
};
Run Code Online (Sandbox Code Playgroud)
information.h
class InformationWidget: public Widget {
public:
...
Direction stringDirection;
...
};
Run Code Online (Sandbox Code Playgroud)
information.cpp
void InformationWidget::show(){
...
if (stringDirection == LEFT) {
... }
}
Run Code Online (Sandbox Code Playgroud)