2012-09-18 88 views
1

我想熟悉boost::geometry::point。在我的課上,我有一個沒有參數的默認構造函數,我想在這種情況下初始化所有的零點值。Boost幾何點初始化

由於設置/獲取函數模板,下面的代碼部分將在編譯時產生的錯誤:

for(std::size_t i = 0; i < pnt.size() ; i++) 
    { 
     pnt.set<i>(0.0); 
    } 

要引用文檔http://www.boost.org/doc/libs/1_51_0/libs/geometry/doc/html/geometry/reference/models/model_point.html

我需要設置一些值,因爲:

座標未初始化。如果帶參數的構造函數未被調用,並且未使用set或assign指定點,則座標值將包含垃圾。

有沒有辦法在編譯時用零初始化所有值?如果沒有,那麼在運行時?

回答

1

您可以使用assign_zeroassign_values(這個只適用於2,3和4的組件):如果你正在使用時,您需要一個寄存器中的BOOST_GEOMETRY_REGISTER_POINT...之一,它的自定義點類

boost::geometry::assign_zero(pnt); 
boost::geometry::assign_values(pnt, 0.0, 0.0); 

爲了能夠使用Boost幾何功能。你可以找到幾個例子here