Ошибка компиляции при шаблонировании моего класса по типу координат и использовании библиотеки Boost Geometry

Я пишу код библиотеки поверх библиотеки Boost Geometry. Мой класс должен быть основан на типе координат (обычно int / float / double и т. Д.).
Приведенный ниже код (сокращенный до минимума) не компилируется, и я получаю ошибку компиляции, которая мне не помогает.

Код:

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point.hpp>

template <typename CoordType>
class MyClass {
public:
typedef boost::geometry::model::point<CoordType, 2, boost::geometry::cs::cartesian> MyPoint;
CoordType getX(const MyClass<CoordType>::MyPoint &p) const { return p.get<0>(); }
};

Ошибка:

test.cpp: In member function 'CoordType MyClass<CoordType>::getX(const MyClass<CoordType>::MyPoint&) const':
test.cpp:8:82: error: expected primary-expression before ')' token

Я компилирую этот код с: g++ -I./boost_1_54_0 test.cpp -o test.o, Я использовал разные версии G ++ 4.5.2 / 4.7.2 / 4.8.1, но все равно получаю ту же ошибку.

Что мне здесь не хватает?
Заранее спасибо.

0

Решение

Используя бесплатную функцию boost::geometry::get<0>(p); рекомендуемые в ускоренной документации обходит эту проблему.

2

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

Я согласен с ответом us2012, используя boost :: geometry :: get<0> () рекомендуется.

Фактическая проблема заключалась в том, что ключевое слово шаблона отсутствовало, так что это:

{вернуть с.шаблон получить<0> (); }

исправил бы проблему.

0