2016-02-25 4 views
1

Моих векторов объявлены следующим образом:GLM :: точка возвращает вектор

std::vector<double> vec1; 
std::vector<double> vec2; 

double result = glm::dot(vec1, vec2); 

Я получаю следующее сообщение об ошибке: error: no viable conversion from 'std::__1::vector<double, std::__1::allocator<double> >' to 'double'

Не должен glm::dot возвращающих скалярное значение (а double) в этом случае ?

+1

Почему бы не использовать типы векторных GLM, например, 'GLM :: dvec3'? – Michael

ответ

4

Возможно, я ошибаюсь, но эта ошибка должна исходить из типа аргумента, а не типа возвращаемого значения, glm :: dot никогда не принимал ни одного std :: vector в качестве аргумента, и поскольку он не является vec2 или vec3 и т. Д. . (не тип GLM), он может попытаться бросить его значение 1 размерных для выполнения 1 Dimension скалярного произведения

0

Просто повторно итерации, что было сказано выше, попробуйте следующее:

glm::dvec3 vec1; 
glm::dvec3 vec2; 
double result = glm::dot(vec1, vec2); 
+0

Это не работает. glm :: dot попробует пожаловаться на то, что существует недействительное преобразование между double и dvec3. –

+0

Действительно? Я снова посмотрел на свой код, и он работает для меня. Если вы дадите ему два dvec3, вы получите двойной. –

+2

Да, я понял, что CLION IDE действительно нова, и иногда не работает. Мой плохой, он выдавал ошибку, потому что не мог справиться с шаблоном функции. –

 Смежные вопросы

  • Нет связанных вопросов^_^