我正在使用自动源代码的一部分
我有一个结构:
typedef struct
{
WPARAM wParam; // Hotkey ID
LPARAM lParam; // Key and modifiers (control, alt, etc)
luabridge::LuaRef lFunction; // Function to call
} HotKeyDetails;
我在我的班级私人存储中创建了这个结构的数组:
static HotKeyDetails *m_HotKeyDetails[MAXHOTKEYS]; // Array for tracking hotkey details
当我想创建一个新的结构时:
m_HotKeyDetails[nFreeHandle] = new HotKeyDetails; // Create new entry
我收到此错误:
1>Scripts.cpp(1216): error C2512: 'HotKeyDetails' : no appropriate default constructor available
我怎么只是从自动源代码中复制/粘贴代码,但在那里它会很好地编译 什么错了
答案 0 :(得分:2)
看起来类luabridge::LuaRef
没有默认构造函数(请参阅documentation),因此编译器也无法为HotKeyDetails
生成默认构造函数。
要解决此问题,只需添加一个构造函数;例如:
struct HotKeyDetails {
WPARAM wParam; // Hotkey ID
LPARAM lParam; // Key and modifiers (control, alt, etc)
luabridge::LuaRef lFunction; // Function to call
explicit HotKeyDetails(lua_State* L): wParam(NULL), lParam(NULL), lFunction(L) {}
};
如果您希望允许此结构是默认可构造的,那么您必须使lFunction
成为指针:
struct HotKeyDetails {
WPARAM wParam; // Hotkey ID
LPARAM lParam; // Key and modifiers (control, alt, etc)
luabridge::LuaRef *lFunction; // Function to call
HotKeyDetails(): wParam(NULL), lParam(NULL), lFunction(NULL) {}
};
答案 1 :(得分:1)
尝试向HotKeyDetails结构添加默认构造函数。像:
struct HotKeyDetails
{
HotKeyDetails() : wParam(0), lParam(0), lFunction(L) {}
WPARAM wParam; // Hotkey ID
LPARAM lParam; // Key and modifiers (control, alt, etc)
luabridge::LuaRef lFunction; // Function to call
} ;
但是,如果要在数组中使用此结构,则需要提供/跟踪应用程序提供的lua_State* L
变量。