我想发送一个“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
是一个静态函数。
如果我的答案有帮助,请勾选它。 –