GLM Math lib使用GCC编译错误

时间:2013-01-23 16:59:58

标签: c++ opengl gcc glm-math

  

可能重复:
  C++ operator overloading: no known conversion from object to reference?

我正在使用GLM lib(版本0.9.4)用于OpenGL渲染器,我现在将其移植到Linux.I与MS VS2010的编译没有任何问题。 现在,当尝试使用GCC(版本4.7.2)在Linux上进行编译时,我有一些与将GLM矩阵作为输入的方法相关的奇怪错误。

例如。这是声明:

  void SetProjection(mat4 &matr);

定义是:

  void TransformState::SetProjection(mat4 &matr){

    _projection=matr;

 }

在某些地方我会这样使用它:

_transform.SetProjection(perspective(_fov , _viewportW/(float)_viewportH,_nearPlane , _farPlane));  

GCC编译器抛出以下内容:

../../ Documents / XXX / XXX / XXXengine / src / cameras / XXXX.cpp:120:104:错误:没有用于调用'ie_engine :: TransformState :: SetProjection(glm)的匹配函数::详细:: tmat4x4)'

对于上面提到的声明方法,我收到此错误:

../../ Documents / XXX / XXXX / XXXengine / include / TransformState.h:31:8:注意:参数1从'glm :: detail :: tmat4x4'到'的转换没有已知GLM :: MAT4&安培; {aka glm :: detail :: tmat4x4&}'

有什么问题?据我所知,GLM确实与GCC合作。

1 个答案:

答案 0 :(得分:1)

void SetProjection(mat4 &matr);

为什么不通过const&而不是非const &来获取参数?这似乎是一个错误,因为SetProjection不是修改参数。

这就是编译器错误的来源。 perspective的返回值是暂时的。暂时不能由非const &存储。