我有两个热门课程。假设其中一个是图像,另一个是页面。Image 对象收到一个 OnPointerPressed 事件,当它发生时,我想从 Page calss 调用一个函数。问题是直到我使用 union hack 将成员函数的地址传递给图像时才定义此函数。当从 Image 类调用此方法时,它可以正常工作,但在方法内部我看不到 Page Object 及其成员。
MainPage::MainPage(void)
{
//.......
image1->OnPointerPressedHandler->add(&MainPage::imageMousePressed);
}
void MainPage::imageMousePressed(STObject* sender, STPointerEventArg * args)
{
void * dsda = this; //the address of this is something wierd
pres = true;
}
有人可以帮忙吗?
template<class T>
void add(T const & x)
{
union hlp_t{
void * v_ptr;
T t;
};
hlp_t a;
a.t = x;
functions->addLast(a.v_ptr);
}
template<class ARG>
void trigger(SENDERTYPE sender, ARG arg)
{
STLinkedListIterator<void *>* it = functions->createIteator();
if(it != nullptr)
{
do
{
void (*callback)(SENDERTYPE,ARG) =static_cast<void (*)(SENDERTYPE,ARG)>(it->getData());
callback(sender,arg);
/*
void * myVoid = it->getData();
__asm
{
push [arg];
push [sender];
call [myVoid];
}
*/
it->next();
}while(!it->EOL());
}
}