我想發送一個「ping」到另一個對象以查看它是否處於活動狀態。這主要用於開發過程中的測試。我一遍又一遍地寫了相同的代碼,所以我正在研究如何對它進行模板化。這裏是我的代碼(即還沒有工作):使用類名稱的模板值作爲指針
template<class T>
bool pingTest(T) {
return T.ping(); // <<< HOW DO I FORM THIS LINE?
}
我想發送一個「ping」到另一個對象以查看它是否處於活動狀態。這主要用於開發過程中的測試。我一遍又一遍地寫了相同的代碼,所以我正在研究如何對它進行模板化。這裏是我的代碼(即還沒有工作):使用類名稱的模板值作爲指針
template<class T>
bool pingTest(T) {
return T.ping(); // <<< HOW DO I FORM THIS LINE?
}
那是因爲你應該添加一個實例:
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?
}
你可能想重新讀你的答案,我認爲你編輯時混合了一些東西:) – Quentin
@ Jarod42這是真的,我現在修好了。 –
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
是一個靜態函數。
如果我的答案有幫助,請勾選它。 –