我正在浏览我正在从事的个人项目的一段 C++ 源代码,但我无法为全世界弄清楚以下代码段中发生了什么:
Event EV_ScriptThread_Execute(
"execute", EV_DEFAULT, NULL, NULL, "Execute the thread."
);
class ScriptThread : Listener
{
{ &EV_ScriptThread_Execute, Execute },
{ NULL, NULL}
};
void ScriptThread::Execute(Event *ev)
{
//Stuff
}
据我所知,它创建了 Event-class 的一个实例并将其存储在EV_ScriptThread_Execute
. 然后它定义了 ScriptThread 类,但我不知道如何解释它后面的行。
有人可以解释一下会发生什么吗?如果{ &EV_ScriptThread_Execute, Execute },
它是完整的,而不是看起来像一个速记符号,会是什么样子。
编辑:显然我误解了我认为会产生的宏定义:class ScriptThread : Listener
,根据我回去的所有回复,发现它实际上构造了某种数组。它仍然让我对发生的事情一无所知......因为我实际上无法编译代码(因为它只是一个片段),我也无法真正查看预编译文件。
这是什么结果?
ResponseDef<ScriptThread> ScriptThread::Responses[] =
{
{ &EV_ScriptThread_Execute, Execute },
{ NULL, NULL}
};
另一个编辑:所以我发现 ResponseDef 是一个看起来像这样的结构:
template< class Type >
struct ResponseDef
{
Event *event;
void (Type::*response)(Event *event);
};
总而言之,这意味着数组被一个结构填满,该结构既接受一个指向实例的指针,也接受Event
一个指向方法的指针,这将解释初始化程序!
感谢大家让我重回正轨!