2013-03-22 27 views
-4

我想在不使用宏的情況下爲兩種不同的數據類型使用一段代碼。我嘗試過這樣的事情,但我沒有提出一個完整的解決方案。使用同一段代碼而不使用兩種不同數據類型的宏

void func(bool istype1, void *ptr) 
{ 
    void *t1; 
    if(isType1) 
     t1=static_cast<type1>(ptr); 
    else // isType1 == false means data type 2. 
     t1=static_cast<type2>(ptr); 

    ... 
    ... 
    ... 
} 
+2

如果您將鑄造的指針分配回'void *',您將立即丟棄類型信息。 – FatalError 2013-03-22 03:04:57

+0

你如何做到這一點,完全取決於那些'...'中的內容,以及你想要做什麼。 – 2013-03-22 05:51:01

回答

5

你想要一個模板。你必須在某處閱讀它們。 http://www.cplusplus.com/doc/tutorial/templates/

您可以實現像

template <class T> 
T max(T one, T two) 
{ 
    return one > two ? one : two; 
} 

一個最大這將任何物體在那裏你可以比較的類上工作。 Ints,花車,甚至使用定義的類。

相關問題