2016-06-13 77 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是一个静态函数。

相关问题