gpt4 book ai didi

c++ - 如何从ExitGames::Common::Object& eventContent获取事件数据?

转载 作者:行者123 更新时间:2023-11-28 06:23:43 25 4
gpt4 key购买 nike

引用此链接“http://recruit.gmo.jp/engineer/jisedai/blog/cocos2d-x_photon/”,我正在尝试使用 cocos2dx 2.2.6 和 photon sdk v4-0-0-5 运行显示简单网络功能的示例。该指南建议以这种方式实现 customEventAction:

void NetworkLogic::customEventAction(int playerNr, nByte eventCode, const ExitGames::Common::Object& eventContent)
{
ExitGames::Common::Hashtable* event;

switch (eventCode) {
case 1:
event = ExitGames::Common::ValueObject<ExitGames::Common::Hashtable*>(eventContent).getDataCopy();
float x = ExitGames::Common::ValueObject(event->getValue(1)).getDataCopy();
float y = ExitGames::Common::ValueObject(event->getValue(2)).getDataCopy();
eventQueue.push({static_cast(playerNr), x, y});
break;
}
}

Xcode 给出错误提示:

Cannot refer to class template "ValueObject" without a template argument list

我自己不熟悉模板,谁能推荐一个合适的方法来提取事件数据,以便将其推送到 eventQueue?或者指出上面代码中的错误。非常感谢!

最佳答案

请尝试以下代码:

void NetworkLogic::customEventAction(int playerNr, nByte eventCode, const ExitGames::Common::Object& eventContent)
{
ExitGames::Common::Hashtable* event;

switch (eventCode) {
case 1:
event = ExitGames::Common::ValueObject<ExitGames::Common::Hashtable*>(eventContent).getDataCopy();
float x = ExitGames::Common::ValueObject<float>(event->getValue(1)).getDataCopy();
float y = ExitGames::Common::ValueObject<float>(event->getValue(2)).getDataCopy();
eventQueue.push({static_cast(playerNr), x, y});
break;
}
}

我刚改了ExitGames::Common::ValueObjectExitGames::Common::ValueObject<float>对于 x 和 y。

对于模板,编译器需要一种方法来找出它应该为什么类型创建模板。由于编译器不可能从参数 event->getValue() 中获取该信息,而且它不能根据返回类型来获取信息,因此您必须指定通过写入 ValueObject<type> 明确预期的 ValueObject 实例的有效负载数据而不仅仅是 ValueObject,所以在你的情况下 ValueObject<float> .

关于c++ - 如何从ExitGames::Common::Object& eventContent获取事件数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28892483/

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