struct dic
{
string key;
int code;
};
dic H[71];
现在在key
- 语句的条件下使用while
会给我一个错误。
while ((H[h].key)!= NULL)
{
}
我得到的错误是:
error: no match for 'operator!=' in 'H[h].dic::key != 0'
答案 0 :(得分:1)
dic::key
的类型为string
,您试图将其与未实现的整数(NULL == 0
)进行比较。您需要检查字符串是否为空:
while (!H[h].key.empty()) {
...
}
答案 1 :(得分:0)
元素的键是一个字符串。您无法将字符串与NULL
进行比较,因为它是一个对象而不是一个指针。宏NULL很可能被定义为指针或int值,并且这两者都不能与字符串相比。
答案 2 :(得分:0)
宏NULL
通常定义为0
或(void *) 0
,与std::string
比较时,不能使用这些值(当然,除非你实现你自己的自定义比较运算符,你不应该这样做。
如果要检查字符串是否为空,请使用std::string::empty
。
答案 3 :(得分:0)
也许你想说:
if (H[h].key.empty()) { ... }