2011-02-01 19 views
2

私は方法があるとします。一時にブースト::バインドと参照変数

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

私はブーストを作成でき::機能:

一時は fがある前に、それが削除されるchar *型である
boost::function<void(const std::string&)> f = boost::bind(foo, temp); 

をと呼ばれる。

答えて

5

はい。 Bindはchar *が文字列に保持されているか、文字列に渡されていることを知ることができません。これを回避するには、使用:

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

あなた一時は文字列としてバインダーにコピーされるようになっています。

0

これはあなたのためにコンパイルされていますか?それはする必要があります

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

だから私はダウン投票してきたもののために?私の答えは正しい。 –