我已经使用以下方法在 Angelscript 中注册了 Vec3 值类型:
RegisterObjectType("Vec3", sizeof(glm::vec3), asOBJ_VALUE | asGetTypeTraits<glm::vec3>());
我还为该类型注册了构造函数和析构函数。
我注册了另一种类型“Transform”,并给它一个方法“Vec3 GetTranslation()”,它对应于 C++ 类方法“const glm::vec3& GetTranslation()”
RegisterObjectMethod("Transform", "Vec3 GetTranslation()", asMETHOD(Transform, GetTranslation), asCALL_THISCALL);
这就是我在 Angelscript 中使用这两者的方式:
Vec3 v = transform.GetTranslation();
我收到了这个错误:
No appropriate opAssign method found in 'Vec3' for value assignment
注册赋值运算符或任何运算符的正确方法是什么?
我试过这个:
RegisterObjectMethod("Vec3", "Vec3 opAssign(const Vec3 &in)", asMETHOD(glm::vec3, operator=), asCALL_THISCALL);
并得到这个编译错误:
error: no matches converting function 'operator=' to type 'void (struct glm::detail::tvec3<float, (glm::precision)0u>::*)()'|
note: in expansion of macro 'asMETHOD'|
note: candidates are: template<class U> glm::detail::tvec3<T, P>& glm::detail::tvec3<T, P>::operator=(const glm::detail::tvec3<U, P>&) [with U = U; T = float; glm::precision P = (glm::precision)0u]
note: glm::detail::tvec3<T, P>& glm::detail::tvec3<T, P>::operator=(const glm::detail::tvec3<T, P>&) [with T = float; glm::precision P = (glm::precision)0u]|