【问题标题】:Boost C++ macro argument count errorBoost C++宏参数计数错误
【发布时间】:2011-03-24 04:03:27
【问题描述】:

在以下代码中:

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

我收到此错误:

错误:宏“BOOST_FOREACH”已通过 3 参数,但只需要 2

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

【问题讨论】:

标签: c++ boost macros foreach boost-foreach


【解决方案1】:

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

typedef std::pair<PID, bool> PID_bool_pair;
BOOST_FOREACH( PID_bool_pair &itval, completedEs_) {
    ...
}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多