적절한 이벤트가 발생할 때 호출 할 객체의 멤버 함수를 객체에 저장하려고합니다. 불행히도이 코드는 많은 오류 메시지를 표시합니다. 아무도 나를 도울 수 있습니까? 잘 작동 다음 보정 : boost :: function을 사용하여 임의의 객체의 멤버 함수에 함수 포인터를 저장하십시오.
업데이트
: 이것은 다음과 같은 오류가 제공class MainPage
{
public:
MainPage::MainPage(void)
{
image1 = new STImagePanel("Untitled.png");
image1->OnPointerPressedHandler->add(&MainPage::imageMousePressed,this);
}
void MainPage::imageMousePressed(STObject* sender, STPointerEventArg * args)
{
MainPage * dsda = (MainPage*)this;
pres = true;
}
};
template<class SENDERTYPE, class ARG>
struct callbackInfo
{
boost::function<void(SENDERTYPE, ARG)> func;
};
template<class SENDERTYPE, class ARG>
class STEventHandler
{
public:
template<class T, class P>
void add(T x, P that)
{
//The following line gives the error
callbackInfo<SENDERTYPE,ARG> tmp { boost::bind(x,that,_2)};
functions->addLast(tmp);
}
private:
STLinkedList<callbackInfo<SENDERTYPE,ARG>>* functions;
}
내가 MainPage::imageMousePressed(STObject* sender, STPointerEventArg * args)
두 개의 인수가 참조
template<class T, class P>
void add(T x, P that)
{
boost::function<void(SENDERTYPE,ARG)> func(boost::bind(x,that,_1,_2));
callbackInfo<SENDERTYPE,ARG> tmp;
tmp.func = func;
}
감사합니다. 이 줄을 시도했지만 여전히 작동하지 않습니다. callbackInfo tmp {boost :: bind (x, that, _1, _2)}; –
DalekSupreme