をブースト::関数オブジェクトを構築するとき、私は工assコンストラクタに引数の前後に括弧を挿入またはブーストを構築する場合は、以下のコードは、Visual C++ 2005エラーC2228コンストラクタ引数リストに
class SomeClass {
public: boost::function<void()> func;
SomeClass(boost::function<void()> &func): func(func) { }
};
void someFunc() {
std::cout << "someFunc" << std::endl;
}
int main() {
SomeClass sc(boost::function<void()>(&someFunc));
sc.func(); // error C2228: left of '.func' must have class/struct/union
return 0;
}
にコンパイルされません。 :引数リストの外にある関数オブジェクト。コンパイルがうまくいきます。
SomeClass sc((boost::function<void()>(&someFunc)));
// or
boost::function<void()> f(&someFunc);
SomeClass sc(f);
前のコードの問題点は何ですか?