0

c++ 中 tbb 和 lambdas 的新手,并且在以下代码中存在编译器错误:

template <class ObjT, class Stepper>
class GroupStepper 
    : public Stepper {

public:
    typedef boost::shared_ptr<ObjT> obj_ptr;

    void step () {

        tbb::parallel_for (blocked_range<int> (0, objs_.size ()),
                     [this] (const blocked_range<int>& r) {
        for (int i=r.begin (), e=r.end (); i<e; ++i) {
            Stepper::step (objs_[i], h_);
        }
        });
    };

private:

    std::vector<obj_ptr>&   objs_;
    scalar                  h_;
};

使用 gcc v. 4.5.1 编译时出现以下错误:

In lambda function:

... error: invalid type argument

... error: invalid type argument

两者都指的是 Stepper::step 的输入参数。我猜这个模板继承有些东西不能很好地与 lambda 配合使用?

任何帮助处理这些东西都将不胜感激。谢谢

4

1 回答 1

0

我认为 lambda 介绍器(又名捕获子句)是不正确的。我不太明白你想用“[this]”表达什么。请查看以下文章以了解正确的语法:http: //msdn.microsoft.com/en-us/library/dd293603.aspx 希望这会有所帮助!:)

于 2013-02-12T23:52:07.293 回答