0

为什么这个输出是0?

http://ideone.com/S7hgv

#include <boost/bind.hpp>
#include <vector>
#include <iostream>

using namespace std;

void f2(vector<int> &h)
{
        h.clear();
        h.push_back(0);
}

void f1(vector<int> &h)
{
        boost::bind(f2, boost::ref(h));
}

int main()
{
        vector<int> h;
        f1(h);

        cout << h.size() << "\n";
}

我需要它为 1,并且由于某种原因 h 没有被修改。

4

1 回答 1

4

boost/std::bind()只构造函数对象。您仍然必须调用它,以便执行内部的任何代码。

要获得 的输出1,请替换该行

    boost::bind(f2, boost::ref(h));

    boost::bind(f2, boost::ref(h))();
于 2012-07-04T21:50:51.800 回答