首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angelscript中基于glm::vec3 3的值类型的寄存器赋值操作符

Angelscript中基于glm::vec3 3的值类型的寄存器赋值操作符
EN

Stack Overflow用户
提问于 2014-11-27 03:06:11
回答 1查看 954关注 0票数 0

我已经在Angelscript中注册了一个Vec3值类型,使用:

代码语言:javascript
复制
RegisterObjectType("Vec3", sizeof(glm::vec3), asOBJ_VALUE | asGetTypeTraits<glm::vec3>());

我还为该类型注册了构造函数和析构函数。

我注册了另一种类型"Transform",并给它一个方法"Vec3 GetTranslation()",它对应于C++类方法"const::vec3& GetTranslation()“

代码语言:javascript
复制
RegisterObjectMethod("Transform", "Vec3 GetTranslation()", asMETHOD(Transform, GetTranslation), asCALL_THISCALL);

这就是我在Angelscript中使用这两种语言的方式:

代码语言:javascript
复制
Vec3 v = transform.GetTranslation();

我得到了一个错误:

代码语言:javascript
复制
No appropriate opAssign method found in 'Vec3' for value assignment

什么是正确的方式注册一个赋值操作符,或任何操作人员的问题?

我试过这个:

代码语言:javascript
复制
RegisterObjectMethod("Vec3", "Vec3 opAssign(const Vec3 &in)", asMETHOD(glm::vec3, operator=), asCALL_THISCALL);

并得到以下编译错误:

代码语言:javascript
复制
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]|
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-27 08:27:26

我使用asMETHODPR而不是asMETHOD修复了编译错误:

代码语言:javascript
复制
RegisterObjectMethod("Vec3", "Vec3& opAssign(const Vec3 &in)", asMETHODPR(glm::vec3, operator=, (const glm::vec3&), glm::vec3&), asCALL_THISCALL);

我还需要更改opAssign方法,以返回Vec3 3&,而不是Vec3。

我更改了GetTranslation()方法以返回Vec3 3&也是这样:

代码语言:javascript
复制
RegisterObjectMethod("Transform", "Vec3& GetTranslation()", asMETHOD(Transform, GetTranslation), asCALL_THISCALL);

这些值现在正在脚本中复制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27162424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档