Angelscript — ожидается «,» или «)»

Таким образом, может показаться, что Angelscript довольно несовместим с теми функциями, которые он мне позволяет выполнять. Я пытаюсь объявить глобальную функцию таким образом:

scrpEngine->RegisterGlobalFunction("float sin(float in)", asFUNCTION(sinCallback), asCALL_CDECL);

Моя функция обратного вызова sin (которая вызывает функцию sin, не беспокоясь о ее перегрузке) выглядит примерно так:

float sinCallback(float in) {
return sin(in);
}

Всякий раз, когда я компилирую скрипт, я получаю ошибки, а именно:

ERROR: System function (1:17) : Expected ')' or ','
ERROR:  (0:0) : Failed in call to function 'RegisterGlobalFunction' with 'float sin(float in)' (Code: -10)

Проверяя документацию и заголовочные файлы, этот код ошибки относится к неверному синтаксису. Однако синтаксис объявления функции определенно ДОЛЖЕН быть действительным. У кого-нибудь есть идеи?

0

Решение

Я думаю, что проблема заключается в подписи, с которой вы регистрируете свою функцию: float sin(float in),
Я предполагаю, что «in» должно быть именем параметра в соответствии с вашей функцией C ++, но AngelScript имеет in/out/inout спецификаторы для ссылок, т.е. float sin(float &in),

Это может быть ошибкой или где-то задокументировано, что вы не можете использовать эти ключевые слова в качестве имен параметров функции.

Если вы просто измените имя параметра в подписи (никаких изменений в вашей функции обратного вызова не требуется) (например, float sin(float f)) или бросьте его целиком (float sin(float), поскольку это не требуется в подписи вообще), ваша функция должна зарегистрироваться нормально.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]