gpt4 book ai didi

C++ 结构默认构造函数

转载 作者:行者123 更新时间:2023-11-30 02:51:09 25 4
gpt4 key购买 nike

我正在使用 autoit 源代码的一部分
我有一个结构:

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

我在我的类私有(private)存储中创建了一个这种结构的数组:

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 源代码中复制/粘贴代码,但在那里它会编译得很好
这有什么问题

最佳答案

看起来 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) {}
};

关于C++ 结构默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19908574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com