2016-06-13 20 views
0

我想發送一個「ping」到另一個對象以查看它是否處於活動狀態。這主要用於開發過程中的測試。我一遍又一遍地寫了相同的代碼,所以我正在研究如何對它進行模板化。這裏是我的代碼(即還沒有工作):使用類名稱的模板值作爲指針

template<class T> 
bool pingTest(T) { 
    return T.ping(); // <<< HOW DO I FORM THIS LINE? 
} 
+0

如果我的答案有幫助,請勾選它。 –

回答

1

那是因爲你應該添加一個實例:

template<class T> 
bool pingTest(T& instance) { 
    return instance.ping(); // <<< HOW DO I FORM THIS LINE? 
} 

,或者甚至更好:請ping靜態的,因此,沒有實例都需要T傳遞到函數,從而節省內存和時間:

template<class T> 
bool pingTest() { 
    return T::ping(); // <<< HOW DO I FORM THIS LINE? 
} 
+0

你可能想重新讀你的答案,我認爲你編輯時混合了一些東西:) – Quentin

+0

@ Jarod42這是真的,我現在修好了。 –

0

T僅僅是一個類型的名字,但有個的沒有實例(對象)是運行此方法的類型。

template<class T> 
bool pingTest(T o) { 
return o.ping(); 
} 

你能做到int + int?不,你不能,但您可以添加兩個整數值:

int a = 1, b = 2; 
a + b;    // a meaningful expression 

同樣,如果T表示暴露出功能ping一個類型,你可以把它叫做T類型的對象,但不是T本身,除非,當然,ping是一個靜態函數。