2015-01-21 76 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