Оглавление

Переменый параметр

Приложение может зарегистрировать функцию, которая принимает ссылку на переменный тип, что означает, что функция может получать ссылки на переменную любого типа. Эта функция полезна при создании общих контейнеров. Когда функция зарегистрирована с этим особым типом параметра, то функция будет получать параметр как ссылку и дополнительный аргумент с идентификатором типа.
// Пример использования родной функции
engine->RegisterGlobalFunction("void func_c(?&in)", asFUNCTION(func_c), asCALL_CDECL);

void func_c(void *ref, int typeId)
{
    // Что-то делаем с ссылкой

    // Тип ссылки определяем по типу id
}

// Пример использования общей функции
engine->RegisterGlobalFunction("void func_g(?&in)", asFUNCTION(func_g), asCALL_GENERIC);

void func_g(asIScriptGeneric *gen)
{
    void *ref = gen->GetArgAddress(0);
    int typeId = gen->GetArgTypeId(0);

    func_c(ref, typeId);
}

В настоящее время возможно использование только с глобальной функцией, конструктором и методами объекта. Она не может быть использована с операторами поведения и другими операторами.

Переменный тип не доступен внутри скрипта, поэтому он может быть использован только для регистрации функций приложения.

Рекомендуется:
Любой объект и Словарь как примеры

Перевод - arroy.one@gmail.com. При копировании материалов указывайте ссылку на источник.