gpt4 book ai didi

c++ - 如何解释我在源代码中找到的这个 C++ 类声明?

转载 作者:太空狗 更新时间:2023-10-29 20:26:39 25 4
gpt4 key购买 nike

我正在查看我正在从事的个人项目的一段 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 类的实例并将其存储在 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 实例的指针,也接受指向方法的指针,这将解释初始化程序!

感谢大家让我回到正轨!

最佳答案

寻找监听器的宏定义。我很确定这背后隐藏着一些可怕的东西。没有其他方法可以将此代码段转换为 C++ 编译器可以接受的内容。

我希望是这样的:

#define Listener ScriptBaseClass { void Execute(Event *ev); } the_script[] =

关于c++ - 如何解释我在源代码中找到的这个 C++ 类声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19052950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com