2013-09-11 2 views
0

я используюЭйген Вектор проблемы COUT

Eigen::Vector2d vector(1,2) 
std::cout << "x" << vector[0] << std::endl; 

, но это не работает из-за недопустимой перегрузки соиЬ

Но это значение должно быть в два раза или?

Eigen::Vector2d vector(1,2) 
double x = vector[0] 
std::cout << "x" << x << std::endl; 

это работает ... все знают почему? Или что мне нужно сделать, чтобы вернуть двойное значение?

спасибо за помощь

+2

Ваш первый фрагмент кода компилируется для меня отлично (если я добавляю отсутствующую точку с запятой). Можете ли вы дать как минимальный, но полный пример, который дает ошибку, которую вы описываете? Пока вы на нем, укажите точное сообщение об ошибке и версию Eigen. – us2012

+0

первый отрезанный не работает? Ок, я попробовал это сейчас ... Я получаю ошибку на eclipse как «недопустимую перегрузку», я только читаю это ... builind и вывод в порядке ... вы знаете, почему eclipse показывает эту ошибку? – Hunk

+0

Мое предположение заключается в том, что бэкэнд анализа кода затмения недостаточно хорош, чтобы поймать все сложности сложной библиотеки шаблонов, таких как Eigen. – us2012

ответ

0

Может быть результатом vector[0] не double? Может быть, это какой-то класс или нестандартный тип? В первом фрагменте вы явно конвертировали vector[0] в double. В этом случае попробуйте сделать результат во втором фрагменте:

Eigen::Vector2d vector(1,2); 
std::cout << "x" << (double)(vector[0]) << std::endl; 

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

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