1
我使用Selene將C++類和函數包裝爲可從Lua訪問。我有一個簡單枚舉類:將枚舉包裝在Selene中以便在Lua中訪問
enum class Motion {
UP = 0,
DOWN = 1,
REPEAT = 2,
};
我想這個包裹Lua的狀態裏面,這樣我可以這樣說:在Lua「Motion.DOWN」,並獲得1
第一次嘗試:
void register(sel::State &L) {
L["Motion"].SetClass<Motion>();
}
編譯器抱怨說它不是一個類。
...
/source/desktop/../external/Selene/include/selene/Class.h:41:10:
error: creating pointer to member of non-class type 'Motion'
void _register_member(lua_State *state,
...
第二次嘗試:
void register(sel::State &L) {
L["Motion"] = Motion;
}
這並不編譯,得到有關 「預計主要表達」 的錯誤,這不是有效的C++。如果我嘗試使用&Motion
,我會得到相同的錯誤。
有沒有辦法做到這一點?最好不包括我再列出所有的枚舉常量。