3

在下面的一段代码中:

BOOST_FOREACH(std::pair<PID, bool> &itval, completedEs_) {
    allCompleted &= it->second;
}

我收到此错误:

错误:宏“BOOST_FOREACH”传递了 3 个参数,但只需要 2 个

我只传递了 2 个参数,这是怎么回事?

4

2 回答 2

8

第一种类型被解析为两个参数,因为它包含一个逗号。作为一种解决方法,您可以 typedef 类型:

typedef std::pair<PID, bool> PID_bool_pair;
BOOST_FOREACH( PID_bool_pair &itval, completedEs_) {
    ...
}
于 2011-03-24T04:07:33.887 回答
2

由于 BOOST_FOREACH 宏限制,您不能这样做,请将其重写为:

//...
typedef std::pair<PID, bool> mypair;
BOOST_FOREACH(mypair &itval, completedEs_) {
    allCompleted &= it->second;
}
//...
于 2011-03-24T04:06:28.930 回答