使用类名的模板值作为指针

时间:2016-06-13 05:10:32

标签: c++ templates pointers

我想向另一个对象发送“ping”以查看它是否还活着。这主要用于开发期间的测试。我一遍又一遍地编写相同的代码,所以我正在研究如何模板化。这是我的代码(目前还不行):

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

2 个答案:

答案 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是一个静态函数。