c++ - C2512 错误 - 即使没有初始化类

标签 c++ compiler-errors

我有点迷路了。我的类“CLuaTick”中有一个类型为“CLuaHook”的成员,我计划在 CLuaTick::Initialize() 函数中使用它。由于链接器,我必须在 cpp 文件中声明我的成员,尽管我不完全确定为什么。将 cpp 中的成员声明设置为 nullptr 会导致运行时崩溃(访问冲突),即使它尚未在任何地方使用。

CLuaHook 的唯一构造函数是 CLuaHook(const char * Hook);

编辑:CLuaHook() 必须使用有效参数调用,因为它将在内部列表中注册并且之后必须删除。

代码如下:
luatick.h

#pragma once
#include "LuaSrc\lua.h"
#include "LuaHook.h"

class CLuaTick
{
private:
    static CLuaHook m_Hook;

public:
    static void Initialize(lua_State *State);
};

luatick.cpp

#include "LuaTick.h"

CLuaHook CLuaTick::m_Hook;

void CLuaTick::Initialize(lua_State * State)
{
    m_Hook = CLuaHook("Tick");
}

我收到的错误:

Error C2512 'CLuaHook': no appropriate default constructor luatick.cpp

最佳答案

错误与编译器所描述的非常相似。 CLuaHook 类没有默认构造函数。换句话说,编译器不知道如何构造不带参数的CLuaHook,因此它也无法构造CLuaTick

您需要提供一个默认构造函数:

CLuaHook() { ... set string to default value here ... }

或者您需要在您的 cpp 中初始化它时提供一个默认字符串:

CLuaHook CLuaTick::m_Hook("Default Text");

关于c++ - C2512 错误 - 即使没有初始化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47383895/

相关文章:

objective-c - Xcode拒绝确认编写良好的代码

Java编译错误加载类路径

android - 构建testcpp Eclipse项目后报错

c++ - 将 char* 转换为 int

c++ - map 中最接近的字符串/时间戳

java - 软件包不存在 mvn clean install

C++:不能使用 std::wstringstream

c++ - C++编程错误|未声明的标识符

c++ - gSOAP:不完整类型的无效使用 'struct SOAP_ENV__Header'

c++ - 迭代 vector 以识别段落