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

时间:2017-11-20 01:30:06

标签: 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");
}

我收到的错误:

  

错误C2512'CLuaHook':没有合适的默认构造函数luatick.cpp

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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