【发布时间】:2013-05-06 22:31:03
【问题描述】:
我正在尝试使用 find_if 布尔函数在以下情况下返回 true:
- Z 为 =
- name="john"(全部小写)
我的代码:
/* predicate for find_if */
bool exam_pred(const exam_struct &a)
{
if ((a.Z=<10)&&(a.name="john"))
{
return true;
}
}
exam_struct{
int x,y;
double Z;
string name;
};
当我设置a.name="john" 时它不会编译。所以我的问题是如何将a.name="john"; 实现到我的布尔值中?
【问题讨论】:
-
警告。并非所有控制路径都返回值...
-
当你对其他程序员说“它不编译”时,这类似于去看医生并说“有些疼”。具体一点,分享你遇到的错误。
-
@ArmenTsirunyan 虽然是有效注释,但根据编译器设置只会给出警告或通知,并回退到默认返回值
0,相当于false。因此它不会破坏代码。 -
@Niels 你错了。无法从具有非 void 返回类型(main 除外)的函数返回值是未定义的行为。
-
有趣的是,我不得不努力寻找standards-quoting source,但你是对的。我很确定大多数编译器将其默认为 0(可能仅在调试版本中),但实际上 TS 应该在
exam_pred函数的末尾显式地return false。反正为你 +1 嘿嘿。
标签: c++ string function struct boolean