首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++结构默认构造函数

C++结构默认构造函数
EN

Stack Overflow用户
提问于 2013-11-11 14:19:15
回答 2查看 562关注 0票数 1

我正在使用autoit源代码的一部分

我有一个结构:

代码语言:javascript
复制
typedef struct
{
    WPARAM  wParam;                             // Hotkey ID
    LPARAM  lParam;                             // Key and modifiers (control, alt, etc)
    luabridge::LuaRef lFunction;                // Function to call
} HotKeyDetails;

我在我的类私有存储中创建了这个结构的数组:

代码语言:javascript
复制
static HotKeyDetails    *m_HotKeyDetails[MAXHOTKEYS];   // Array for tracking hotkey details

当我想要创造一个新的结构:

代码语言:javascript
复制
m_HotKeyDetails[nFreeHandle] = new HotKeyDetails;   // Create new entry

我知道这个错误:

代码语言:javascript
复制
1>Scripts.cpp(1216): error C2512: 'HotKeyDetails' : no appropriate default constructor available

我是如何从autoit源代码中复制/粘贴代码的,但是在这里它会编译得很好。

这有什么不对

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-11 14:26:45

看起来类luabridge::LuaRef没有默认构造函数(参见文档),因此编译器也不能为HotKeyDetails生成默认构造函数。

要解决这个问题,只需添加一个构造函数;例如:

代码语言:javascript
复制
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成为一个指针:

代码语言:javascript
复制
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) {}
};
票数 2
EN

Stack Overflow用户

发布于 2013-11-11 14:29:58

尝试向HotKeyDetails结构添加默认构造函数。比如:

代码语言:javascript
复制
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变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19908574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档