0

c++ を使用して config.lua ファイルから変数を取得しようとしています。これらの変数を取得するためにチュートリアルから Lua クラスを作成しましたが、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。また、一時文字列を作成する必要はありません。使用できるパラメータ タイプは 1 つだけなconst std::string&ので ( )、次のようにしてみてください。

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