2015-01-21 75 views
0

错误的是(使用VS2013 - GLM):函数模板“GLM:暧昧电话::球面线性插值

重载函数的多个实例 “GLM ::球面线性插值” 的 参数列表匹配: :detail :: tquat glm :: slerp(const glm :: detail :: tquat & x,const glm :: detail :: tquat & y,const T & a)“function template”T glm :: slerp(const glm :: detail :: tquat & x,const glm :: detail :: tquat & y,const T & a)“ argument ty pes是:(glm :: quat,glm :: quat,float)

我用两个glm :: quat和一个常量浮点值调用它,就像使用glm :: lerp和GLM ::混合。错误消息中显示的两个重载函数仅在返回类型上有所不同。我一直在寻找一个没有任何运气的答案。

确切的呼叫:

const float t = 0.5f; 
glm::quat newQ = glm::slerp(quatA, quatB, t); 
+0

我不假设VS2013指向错误引用的文件内声明? – 2015-01-21 06:40:16

回答

0

这是不可能的(听说是非法的)在C++中有函数的定义,只有返回类型不同,因为返回类型是不是签名的组成部分,因此,将违反一个定义规则。

我建议你明确地写出模板参数,或者转换成你确定的东西?

+0

这就是我发布这个的原因,因为它没有任何意义 - 签名是基于参数的。然而,这是我得到的错误消息,是的,我已经尝试铸造,但没有任何运气。 – Rebirth 2015-01-21 06:26:35

+0

也许具有相同签名的2个函数不在同一个名称空间中。这是一种典型的'gml'设计技术,其实现在''detail'命名空间中,并且通过''using''指令将它们带入'glm'命名空间,这些命令根据包含或定义以可配置方式引入特征。 – 2015-01-21 06:29:21

+0

我将GLM更新为最新版本,现在可以使用slerp功能而不会变红(我错过了12月的更新)。可悲的是,我遇到了另一个人正在遇到的问题(我留下了一条评论):http://stackoverflow.com/questions/28023412/include-glm-ext-hpp-makes-the-compiler-report-a- declspecalign16-wont – Rebirth 2015-01-21 07:32:08