令牌和枚举类型之间的操作数
Operand between token and enum type
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'
(我之前忘了添加函数参数。
您可以使用
.
运算符访问结构的特定成员,如下所示
if(t.v == Unknown) return false
如注释中所建议的,您还可以修改结构并添加一个返回布尔值的函数。
struct token {
string s;
symbol v;
bool checkUnknown(){
return v == Unknown;
}
};
然后你可以做
if(t.checkSymbolUnknown()) return false;
如果你有一个 C++11 编译器,我建议使用 Scoped 枚举:
enum class symbol {Number, Letter, Open_Bracket, Closed_Bracket, Unknown};
struct token {
string s;
symbol v;
};
// -----
if (t.v == symbol::Unknown)
return false;
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- 控制允许动态运行c++的并发操作数
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 大小相等但成员数量不同的结构之间的性能差异
- 类与私有变量的其他类之间的线程安全性
- 如何在cpp文件之间切换窗口?在Qt中
- 线程之间的布尔停止信号
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 放置 new 的返回值与其操作数的强制转换值之间是否存在(语义)差异
- 令牌和枚举类型之间的操作数