假設我有一個數據類型enum TreeTypes { TallTree, ShortTree, MediumTree }
。如何根據變量值習慣性地調用C++函數?
我必須根據一種特定的樹類型初始化一些數據。
目前,我寫了這個代碼:
int initialize(enum TreeTypes tree_type) {
if (tree_type == TallTree) {
init_tall_tree();
}
else if (tree_type == ShortTree) {
init_short_tree();
}
else if (tree_type == MediumTree) {
init_medium_tree();
}
return OK;
}
但這是某種愚蠢的代碼的重複。我沒有使用任何強大的C++功能,如模板。
我怎樣才能更好地編寫這段代碼?
謝謝,博大Cydo。
看起來像改善你的代碼應該從設計開始。你可以嘗試用if(){} else {}這樣的巧妙使用其他語言特性來取代舊的控制結構,但我懷疑它會改進代碼。寫更多關於這個問題本身。你想要建模什麼? – 2010-08-05 20:09:56
我使用的代碼更復雜。我試圖用一個非常小的例子簡化它。我正在研究非常大的項目,並且在一個地方用戶可以有各種數據類型(這裏我稱它們爲TallTree,ShortTree,MediumTree)。對於每種數據類型,我都必須採取一些行動。在我的情況下,它是12種不同的類型,所以我的if/else if/else if /是12不同的if/else if/...語句。很壞。 – bodacydo 2010-08-05 20:17:23
但是,實際調用初始化時,tree_type參數來自哪裏。初始化一個正常的函數或某個類的方法?這些init函數是否對一些全局數據起作用?他們初始化了什麼。沒有參數。他們的方法? – 2010-08-05 20:22:28