2

私がメソッドを持っているとしましょう:

void foo(const std::string& s);

boost :: functionを作成できますか:

boost::function<void(const std::string&)> f = boost::bind(foo, temp);

fここで、tempは、が呼び出される前に削除されたchar*です。

4

2 に答える 2

5

はい。バインドは、char* を文字列に保持できること、または文字列に渡されることを認識できません。これを回避するには、次を使用します。

boost::bind(foo, std::string(temp));

temp が文字列としてバインダーにコピーされるようにします。

于 2011-02-01T13:42:51.320 に答える
0

そして、これはあなたのためにコンパイルしていますか?そのはず

boost::function<void()> f = boost::bind(foo, std::string(temp));
于 2011-02-11T17:37:14.307 に答える