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 の異なるバージョンを使用しましたが、それでも同じエラーが発生します。
ここで何が欠けていますか?前もって感謝します。