enum symbol {Number, Letter, Open_Bracket, Closed_Bracket, Unknown}
struct token {
string s;
symbol v;
};
现在,我想编写一个函数,如果令牌t未知,则返回false。我试过了
bool check(token &t)
if (t == Unknown)
return false;
但我知道这是错的,因为t是一个标记而Unknown是一个符号。我怎样才能使它们成为同一类型?
我无法使用点符号,因为如果我使用
if (t.v == Unknown) return false;
我收到此消息
multiple definition of 't'
(我忘记在之前添加函数参数。)
答案 0 :(得分:4)
您可以使用此{/ p>之类的.
运算符访问结构的特定成员
if(t.v == Unknown) return false
根据评论中的建议,您还可以修改结构并添加一个返回布尔值的函数。
struct token {
string s;
symbol v;
bool checkUnknown(){
return v == Unknown;
}
};
然后你可以做
if(t.checkSymbolUnknown()) return false;
答案 1 :(得分:3)
如果您有C ++ 11编译器,我建议使用Scoped enumerations:
enum class symbol {Number, Letter, Open_Bracket, Closed_Bracket, Unknown};
struct token {
string s;
symbol v;
};
// -----
if (t.v == symbol::Unknown)
return false;