0

我正在尝试使用 c++ 从我的 config.lua 文件中获取一个变量。我从教程中创建了一个 Lua-Class 来获取这些变量,但是当我尝试调用从 config.lua 获取变量的函数时出现错误

以下是代码片段:

LuaScript script("config.lua");
script.get(string("test"));

我在调用“script.get(string(”test));”时收到错误,“没有函数模板的实例与参数列表匹配”

模板函数和特化如下所示:

template<typename T>
T get( const std::string &variableName )
{
    if (!L)
    {
        printError(variableName, "Script not loaded");
        return lua_getdefault<T>();
    }

    T result;
    if (lua_gettostack(variableName))
    {
        result = lua_get<T>(variableName);
    }else{
        result = lua_getdefault<T>();
    }

    clean();
    return result;
}

专业化:

template<>
inline std::string LuaScript::lua_get<std::string>( const std::string &variableName )
{
std::string s = "null";
if (lua_isstring(L, -1))
{
    s = std::string(lua_tostring(L, -1));
}else{
    printError(variableName, "Not a string");
}

return s;
}

只是为了获得更多信息,我正在使用 Visual Studio 2012 进行编码和编译。

感谢您的帮助 :)

4

1 回答 1

0

编译器不知道T您的模板化get(),因为它只是一个返回值(即使您要将返回值分配给变量,C++ 也不会T根据返回值进行推断)。所以你必须明确告诉编译器什么是T. 此外,您不需要创建临时字符串,因为只有一种可能的参数类型 ( const std::string&),所以试试这个:

script.get<std::string>("test");
于 2014-03-04T16:53:42.063 回答