2012-02-18 74 views
-1

我想讓我的地圖生成器用給定的tile填充地圖的某些部分,但我不知道如何傳遞該值,我需要使用給定TYPE(它是參數)...例如:C++指向一個類的對象,而不是對象

void flood(/*???*/ pattern, double radius_val, tile *map[20][20], int x, int y) 
{ 
    if (radius_val<0) return; 
    map[x][y]=new pattern(); 
    flood(pattern,radius_val-1, map, x+1, y); 
    //... more code 
}; 

我不知道如何表達泛洪被他打算什麼類型的對象,使...模式應在瓷磚類的一個孩子被人指指點點(例如tile_tree) 。

Thanx的任何幫助。

回答

3

函數參數不能是類型,因爲函數參數保存值,類型不是值。然而,模板參數可以是類型。

template <typename pattern> 
void flood(double radius_val, tile *map[20][20], int x, int y) 
{ 
    if (radius_val<0) return; 
    map[x][y]=new pattern(); 
    flood<pattern>(radius_val-1, map, x+1, y); 
    //... more code 
}; 

基本上,這爲您要使用的每個pattern一個新的功能,但沒有打字了所有的函數定義的麻煩。

+0

所以在我的情況(我想tile_tree)如何使用這個功能?洪水(/ * args * /)? – 2012-02-18 14:28:45

+0

@kittyPL是的,正好。 – hvd 2012-02-18 14:29:42

+0

太棒了!工作,6分鐘和檢查,你是如此之快:D – 2012-02-18 14:33:07

相關問題