아래 코드는 비주얼 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 생성자에 인수 주위에 괄호를 넣어 또는 부스트를 구성하는 경우 : : 함수 객체는 잘 컴파일 된 인수 목록 밖에 있습니다.
SomeClass sc((boost::function<void()>(&someFunc)));
// or
boost::function<void()> f(&someFunc);
SomeClass sc(f);
이전 코드의 문제점은 무엇입니까?