gpt4 book ai didi

javascript - 如何与来自 Cheerp/js 的外部变量交互?

转载 作者:行者123 更新时间:2023-12-02 09:53:25 25 4
gpt4 key购买 nike

Cheerp是一个 C++ 到 js/wasm 的转译器。 Screeps是一个编程视频游戏。

我如何阅读 Game.time 我转译的 C++ 代码中的变量? (在爬行中)

#include <cheerp/client.h>
#include <iostream>
using namespace std;

namespace client {
class Game : public Object {
public:
static volatile double time;
};

extern volatile Game &Game;
}

void webMain() {
cout << __TIME__ << ": The current time is: " << client::Game.time << endl;
}

我尝试了多种变化:
  • extern , volatilestatic
  • 引用和指针
  • 两个clientcheerp命名空间
  • 继承自 Node/Object
  • int32_t对比 double对比 float作为类型

  • 我似乎得到:
  • NaN
  • 0
  • 1
  • 编译代码中的致命类型处理错误

  • 如何在我的 C++ 代码中正确地与 Javascript 对象和变量交互?至少可以说,欢呼的文档非常稀疏......

    注意:cheerp 从未真正生成正确的 Javascript。关于 Game 的方式总是存在一些不一致的地方。对象被处理并且在很多情况下它错误地尝试索引 Game.d作为数组而不是 Game.time .

    最佳答案

    client 中声明的类命名空间不应有成员字段。

    要访问外部 JS 对象属性,您需要添加以 get_ 开头的方法和 set_ , 分别读取和写入属性:

    #include <cheerp/client.h>
    #include <iostream>
    using namespace std;

    namespace client {
    class Game : public Object {
    public:
    double get_time();
    };

    extern Game &Game;
    }

    void webMain() {
    cout << __TIME__ << ": The current time is: " << client::Game.get_time() << endl;
    }



    此外,您不需要在此处使用 volatile。

    关于javascript - 如何与来自 Cheerp/js 的外部变量交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62378053/

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