0
系統:CentOS的-5使用gcc-4.7.2和提高-v1.54升壓幾何:傳統對象適應
問題:我努力去適應傳統的(自定義),用於提升使用的對象: :幾何。更具體地說,我想使用升壓幾何轉換,我遵循guide的code。我的對象與那裏使用的「Q對象」稍有不同,但是編譯錯誤消息是相似的,所以在這裏我嘗試編譯Boost提供的代碼。
當我應用轉換時出現錯誤。
int main(int argc, char* argv[])
{
// create square (I know, I will be bored to deallocate)
std::vector<QPoint*> points = {new QPoint(0, 0), new QPoint(0, 1),
new QPoint(1, 1), new QPoint(1, 0),
new QPoint(0, 0)};
QLineString ls;
ls.points = points;
QRing ring;
ring.lines.push_back(&ls);
QPolygon square;
square.exterior = ˚
// translation vector
QPoint m(2, 3);
namespace trans = boost::geometry::strategy::transform;
trans::translate_transformer<QPolygon, QPolygon>
dummy_translate(m.x, m.y);
// translate square
QPolygon square_r;
boost::geometry::transform(square, square_r, dummy_translate); // COMPILATION ERROR!
return 0;
}
編譯錯誤信息:
[100%] Building CXX object CMakeFiles/test.dir/main.cpp.o
In file included from /cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_algobase.h:68:0,
from /cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/char_traits.h:41,
from /cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/ios:41,
from /cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/istream:40,
from /cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/sstream:39,
from /cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/complex:47,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/type_traits/is_complex.hpp:12,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/type_traits.hpp:49,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/core/cs.hpp:19,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/geometry.hpp:19,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry.hpp:17,
from /users/ddakop/dev/misc/traits/main.cpp:1:
/cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_iterator.h: In instantiation of ‘class std::back_insert_iterator<QRing>’:
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/transform.hpp:158:9: required from ‘static bool boost::geometry::detail::transform::transform_polygon::apply(const Polygon1&, Polygon2&, const Strategy&) [with Polygon1 = QPolygon; Polygon2 = QPolygon; Strategy = boost::geometry::strategy::transform::translate_transformer<QPolygon, QPolygon>]’
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/transform.hpp:310:64: required from ‘bool boost::geometry::transform(const Geometry1&, Geometry2&, const Strategy&) [with Geometry1 = QPolygon; Geometry2 = QPolygon; Strategy = boost::geometry::strategy::transform::translate_transformer<QPolygon, QPolygon>]’
/users/ddakop/dev/misc/traits/main.cpp:29:65: required from here
/cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_iterator.h:438:7: error: no type named ‘value_type’ in ‘class QRing’
/cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_iterator.h:445:7: error: no type named ‘value_type’ in ‘class QRing’
In file included from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/geometry.hpp:68:0,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry.hpp:17,
from /users/ddakop/dev/misc/traits/main.cpp:1:
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/transform.hpp: In instantiation of ‘static bool boost::geometry::detail::transform::transform_polygon::apply(const Polygon1&, Polygon2&, const Strategy&) [with Polygon1 = QPolygon; Polygon2 = QPolygon; Strategy = boost::geometry::strategy::transform::translate_transformer<QPolygon, QPolygon>]’:
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/transform.hpp:310:64: required from ‘bool boost::geometry::transform(const Geometry1&, Geometry2&, const Strategy&) [with Geometry1 = QPolygon; Geometry2 = QPolygon; Strategy = boost::geometry::strategy::transform::translate_transformer<QPolygon, QPolygon>]’
/users/ddakop/dev/misc/traits/main.cpp:29:65: required from here
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/transform.hpp:165:9: error: no matching function for call to ‘boost::geometry::traits::resize<CustomPolygonRingRange>::apply(boost::geometry::interior_return_type<QPolygon>::type, std::size_t)’
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/transform.hpp:165:9: note: candidate is:
In file included from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/append.hpp:21:0,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/detail/assign_values.hpp:29,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/strategies/cartesian/cart_intersect.hpp:20,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/strategies/intersection.hpp:23,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/strategies/strategies.hpp:25,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/geometry.hpp:35,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry.hpp:17,
from /users/ddakop/dev/misc/traits/main.cpp:1:
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/core/mutable_range.hpp:84:24: note: static void boost::geometry::traits::resize<Range>::apply(typename boost::geometry::traits::rvalue_type<Range>::type, std::size_t) [with Range = CustomPolygonRingRange; typename boost::geometry::traits::rvalue_type<Range>::type = CustomPolygonRingRange&; std::size_t = long unsigned int]
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/core/mutable_range.hpp:84:24: note: no known conversion for argument 1 from ‘boost::geometry::interior_return_type<QPolygon>::type {aka CustomPolygonRingRange}’ to ‘boost::geometry::traits::rvalue_type<CustomPolygonRingRange>::type {aka CustomPolygonRingRange&}’
In file included from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/geometry.hpp:68:0,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry.hpp:17,
from /users/ddakop/dev/misc/traits/main.cpp:1:
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/transform.hpp:181:13: error: invalid initialization of non-const reference of type ‘QRing&’ from an rvalue of type ‘boost::iterator_facade<PolyRingIterator<__gnu_cxx::__normal_iterator<QRing**, std::vector<QRing*> >, QRing>, QRing, std::random_access_iterator_tag, QRing, long int>::reference {aka QRing}’
In file included from /cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_algobase.h:68:0,
from /cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/char_traits.h:41,
from /cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/ios:41,
from /cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/istream:40,
from /cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/sstream:39,
from /cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/complex:47,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/type_traits/is_complex.hpp:12,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/type_traits.hpp:49,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/core/cs.hpp:19,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/geometry.hpp:19,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry.hpp:17,
from /users/ddakop/dev/misc/traits/main.cpp:1:
/cad2/gcc/gcc-4.7.2/dist/bin/../lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_iterator.h:481:5: error: in passing argument 1 of ‘std::back_insert_iterator<_Container> std::back_inserter(_Container&) [with _Container = QRing]’
In file included from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/detail/assign_values.hpp:30:0,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/strategies/cartesian/cart_intersect.hpp:20,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/strategies/intersection.hpp:23,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/strategies/strategies.hpp:25,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/geometry.hpp:35,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry.hpp:17,
from /users/ddakop/dev/misc/traits/main.cpp:1:
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/clear.hpp: In instantiation of ‘static void boost::geometry::detail::clear::polygon_clear<Polygon>::apply(Polygon&) [with Polygon = QPolygon]’:
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/clear.hpp:132:9: required from ‘static void boost::geometry::dispatch::devarianted_clear<Geometry>::apply(Geometry&) [with Geometry = QPolygon]’
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/clear.hpp:177:5: required from ‘void boost::geometry::clear(Geometry&) [with Geometry = QPolygon]’
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/transform.hpp:156:9: required from ‘static bool boost::geometry::detail::transform::transform_polygon::apply(const Polygon1&, Polygon2&, const Strategy&) [with Polygon1 = QPolygon; Polygon2 = QPolygon; Strategy = boost::geometry::strategy::transform::translate_transformer<QPolygon, QPolygon>]’
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/transform.hpp:310:64: required from ‘bool boost::geometry::transform(const Geometry1&, Geometry2&, const Strategy&) [with Geometry1 = QPolygon; Geometry2 = QPolygon; Strategy = boost::geometry::strategy::transform::translate_transformer<QPolygon, QPolygon>]’
/users/ddakop/dev/misc/traits/main.cpp:29:65: required from here
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/clear.hpp:52:9: error: no matching function for call to ‘boost::geometry::traits::clear<CustomPolygonRingRange>::apply(boost::geometry::interior_return_type<QPolygon>::type)’
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/clear.hpp:52:9: note: candidate is:
In file included from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/append.hpp:21:0,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/detail/assign_values.hpp:29,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/strategies/cartesian/cart_intersect.hpp:20,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/strategies/intersection.hpp:23,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/strategies/strategies.hpp:25,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/geometry.hpp:35,
from /cad2/Boost/install/boost-1.54.0/64/include/boost/geometry.hpp:17,
from /users/ddakop/dev/misc/traits/main.cpp:1:
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/core/mutable_range.hpp:50:24: note: static void boost::geometry::traits::clear<Range>::apply(typename boost::geometry::traits::rvalue_type<Range>::type) [with Range = CustomPolygonRingRange; typename boost::geometry::traits::rvalue_type<Range>::type = CustomPolygonRingRange&]
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/core/mutable_range.hpp:50:24: note: no known conversion for argument 1 from ‘boost::geometry::interior_return_type<QPolygon>::type {aka CustomPolygonRingRange}’ to ‘boost::geometry::traits::rvalue_type<CustomPolygonRingRange>::type {aka CustomPolygonRingRange&}’
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/core/mutable_range.hpp: In instantiation of ‘static void boost::geometry::traits::clear<Range>::apply(typename boost::geometry::traits::rvalue_type<Range>::type) [with Range = CustomPolygonRingRange; typename boost::geometry::traits::rvalue_type<Range>::type = CustomPolygonRingRange&]’:
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/clear.hpp:52:9: required from ‘static void boost::geometry::detail::clear::polygon_clear<Polygon>::apply(Polygon&) [with Polygon = QPolygon]’
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/clear.hpp:132:9: required from ‘static void boost::geometry::dispatch::devarianted_clear<Geometry>::apply(Geometry&) [with Geometry = QPolygon]’
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/clear.hpp:177:5: required from ‘void boost::geometry::clear(Geometry&) [with Geometry = QPolygon]’
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/transform.hpp:156:9: required from ‘static bool boost::geometry::detail::transform::transform_polygon::apply(const Polygon1&, Polygon2&, const Strategy&) [with Polygon1 = QPolygon; Polygon2 = QPolygon; Strategy = boost::geometry::strategy::transform::translate_transformer<QPolygon, QPolygon>]’
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/algorithms/transform.hpp:310:64: required from ‘bool boost::geometry::transform(const Geometry1&, Geometry2&, const Strategy&) [with Geometry1 = QPolygon; Geometry2 = QPolygon; Strategy = boost::geometry::strategy::transform::translate_transformer<QPolygon, QPolygon>]’
/users/ddakop/dev/misc/traits/main.cpp:29:65: required from here
/cad2/Boost/install/boost-1.54.0/64/include/boost/geometry/core/mutable_range.hpp:52:9: error: ‘boost::remove_reference<CustomPolygonRingRange>::type’ has no member named ‘clear’
make[2]: *** [CMakeFiles/test.dir/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/test.dir/all] Error 2
make: *** [all] Error 2
你說得對。這是一個錯字,從實際執行中遺留下來。然而,大問題依然存在。 –