Я пытаюсь получить переменную из моего файла config.lua с помощью C++. Я создал Lua-класса из учебника, чтобы получить эти переменные, но I'am получаю ошибку при попытке вызова функции, который получает переменную из config.luaC++ error: no instance of function template
вот фрагменты кода:
LuaScript script("config.lua");
script.get(string("test"));
I'am получает ошибку «не экземпляр шаблона функции не соответствует списку аргументов», в точке, где я называю «script.get (строка (» тест));»
шаблон функция и специализация выглядят так:
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;
}
Просто для некоторой дополнительной информации, I'am кодирования и компиляции с Visual Studio 2012.
спасибо за вашу помощь :)
'LuaScript :: lua_get' ** не специализация ** из ('get()'), который вы показываете. –
так мне нужно написать специализацию или моя ошибка где-то еще? потому что функция get() вызывает lua_getdefault – chrisoo
, кто ниспроверг, почему downvote? ОП не сказал, что специализация была для get(); они правильно показали специализацию lua_get для строки, так как это тот, который, по их мнению, был создан (но не был, согласно моему ответу). –
Schollii