黑板是樹的所有節點共享的鍵/值儲存。
鍵是乙個字串而值是型別擦除容器(稱為safeany::any
),其允許使用者儲存的任何c ++物件,並將它轉換回其原始形式。
反之,以boost::any
和std::any
,safeany::any
也將盡量避免共同溢和下溢錯誤。
事實上,你不能將乙個負數轉換成乙個unsigned integer
超過2 ^ 8的非大數字char
。
如果值儲存為字串,黑板將使用convertfromstring()
它將其強制轉換為型別t(參見前面的示例);
使用者可以建立他/她自己的blackboards後端; 例如,可以使用資料庫建立永續性黑板。
讓我們從乙個******actionnode
寫入黑板開始。
// write into the blackboard key: [goalpose]
// use this function to create a ******actionnode
nodestatus calculategoalpose(treenode& self)
; // recommended: check if the blackboard is nullptr first
if( self.blackboard() )
else
}
讓我們考慮以下xml樹定義:
根sequencestar將執行四個動作:
為了您的資訊,goalpose儲存為型別刪除pose2d。
另一方面,othergoal儲存為std :: string,但是通過getparam()使用該函式的方法轉換為pose2d convertfromstring()。
在下面的**示例中,我們可以看到兩種將blackboard分配給樹的等效方法。
int main()
return 0;
}/* expected output
[ movebase: started ]. goal: x=1 y=2.0 theta=3.14
[ movebase: finished ]
[ movebase: started ]. goal: x=-1 y=3.0 theta=0.50
[ movebase: finished ]
*/
DevExpress學習筆記(六) Edit樹節點
devexpress學習筆記 edit樹節點的列 所謂edit樹節點的列,有如下兩層含義 1 根據某標識決定節點的某列cell的形式,例如cell可選擇為時間控制項,dropdownlist控制項等等 2 與第一點類似,但是需要在執行時才動態決定cell的型別,例如滑鼠單擊某cell的時候,決定此c...
qt學習筆記(六)之簡析物件樹
qt提供了一種機制,能夠自動 有效的組織和管理繼承自qobject的qt物件,這種機制就是物件樹。qt物件樹在使用者介面程式設計上是非常有用的。它能夠幫助程式設計師減輕記憶體洩露的壓力。比如說當應用程式建立了乙個具有父視窗部件的物件時,該物件將被加入父視窗部件的孩子列表。當應用程式銷毀父視窗部件時,...
qt學習筆記(六)之簡析物件樹
qt提供了一種機制,能夠自動 有效的組織和管理繼承自qobject的qt物件,這種機制就是物件樹。qt物件樹在使用者介面程式設計上是非常有用的。它能夠幫助程式設計師減輕記憶體洩露的壓力。比如說當應用程式建立了乙個具有父視窗部件的物件時,該物件將被加入父視窗部件的孩子列表。當應用程式銷毀父視窗部件時,...