わかりました.. まず第一に、私はそのソースで BOOST を使用していると言わなければなりません (私はそうしなければなりません)。私は BOOST と C++ の両方の初心者ですが、コーディングは初めてではありません (マネージ言語には慣れています)。私はやや大規模なプロジェクトでこの問題に遭遇し、ここに提示しているこの小さなコード スニペットでそれを再現しました。
#include <boost/thread.hpp>
void foo(int bar) {
printf("Chu %d!",bar);
}
int main() {
boost::thread_attributes attrs;
boost::thread causeTrouble(attrs,foo,42); // <-- Probably problematic line
causeTrouble.join();
}
BOOST 1.52.0 のドキュメントによると、このスニペットは正常にコンパイルおよび実行されるはずです。ただし、BOOST ライブラリ ヘッダー ファイルで奇妙なコンパイルの問題が発生します (他のエラーや警告はありません)。
<boost_path>/bind/bind.hpp:313: error: no match for call to '(boost::thread_attributes) (void (*&)(int), int&)
以前にリンクされたドキュメントによると、実際のboost::thread(boost::thread_attributes,F f) コンストラクターがないように見えます。とにかく、面白いのは、次の両方の行が正常にコンパイルされることです。
boost::thread noTrouble(attrs,foo);
と
boost::thread noTroubleEither(foo,42);
StackOverflow やその他のインターネットを徹底的に検索したとしても、頭をどこに向けたらよいかわかりません :( 実は、実際に新しい質問をすることを余儀なくされたのはこれが初めてです. 助けて!