GLM Math lib ошибки компиляции с GCC

Возможный дубликат:
Перегрузка оператора C ++: нет известного преобразования объекта в ссылку?

я использую GLM lib (версия 0.9.4) для рендерера OpenGL, который я сейчас портирую на Linux. У меня не было проблем с компиляцией с MS VS2010.
Теперь при попытке компиляции в Linux с помощью GCC (версия 4.7.2) у меня возникают странные ошибки, связанные с методами, которые получают матрицы 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 :: detail :: tmat4x4)’

И для вышеупомянутого метода объявления я получаю эту ошибку:

../../Documents/XXX/XXXX/XXXengine/include/TransformState.h:31:8: примечание: неизвестное преобразование для аргумента 1 из ‘glm :: detail :: tmat4x4’ в ‘glm :: mat4& {aka glm :: detail :: tmat4x4&}»

В чем проблема? Насколько я знаю, GLM работает с GCC.

1

Решение

void SetProjection(mat4 &matr);

Почему вы не берете параметр по const& вместо неконстантных &? Это выглядит как ошибка, так как SetProjection не является модифицирующий параметр.

Вот откуда исходит ошибка вашего компилятора. Возвращаемое значение perspective является временным. И временный не может быть сохранен неконстантным &,

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]