gpt4 book ai didi

c++ - 所有 CC_CALLBACK_# 宏之间有什么区别?

转载 作者:行者123 更新时间:2023-11-28 00:27:36 25 4
gpt4 key购买 nike

我是 cocos2dx 和 c++ 的新手。我一直在摆弄启动器 HellowWorldScene 并注意到这一行:

auto closeItem = MenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));

当我将 CC_CALLBACK 更改为 CC_CALLBACK_2 时,xcode 提示“没有匹配函数来调用‘create’”。这是为什么? CC_CALLBACK 末尾的数字是什么意思?一个函数也可以只接受一种类型的 CC_CALLBACK 选择器吗?

最佳答案

这是关于您的回调函数期望的参数数量。

来自文档:

#define     CC_CALLBACK_0(__selector__, __target__,...)   std::bind(&__selector__,__target__, ##__VA_ARGS__)
#define CC_CALLBACK_1(__selector__, __target__,...) std::bind(&__selector__,__target__, std::placeholders::_1, ##__VA_ARGS__)
#define CC_CALLBACK_2(__selector__, __target__,...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, ##__VA_ARGS__)
#define CC_CALLBACK_3(__selector__, __target__,...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, ##__VA_ARGS__)

如您所见,具有不同编号的版本扩展到不同的 std::bind 调用。您可以在此处阅读有关 std::placeholders 的更多信息:link

如果有任何不清楚的地方,请告诉我!

关于c++ - 所有 CC_CALLBACK_# 宏之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24233439/

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