我想向另一个对象发送“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?
}
答案 1 :(得分: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
是一个静态函数。