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 に答える