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

How do I interface with extern variables from Cheerp/js?

Cheerp is a C++ to js/wasm transpiler. Screeps 是一款编程视频游戏。

如何从我的转译 C++ 代码中读取 Game.time 变量? (在 screeps 中)


#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;
}

我已经尝试了多种变体:

我似乎得到了:

如何在我的 C++ 代码中正确地连接 Javascript 对象和变量?至少可以说 cheerp 文档非常稀疏...


注意: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