我正在使用autoit源代码的一部分
我有一个结构:
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我是如何从autoit源代码中复制/粘贴代码的,但是在这里它会编译得很好。
这有什么不对
发布于 2013-11-11 14:26:45
看起来类luabridge::LuaRef没有默认构造函数(参见文档),因此编译器也不能为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) {}
};发布于 2013-11-11 14:29:58
尝试向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变量。
https://stackoverflow.com/questions/19908574
复制相似问题