使用类名的模板值作为指针
Use template value for class name as pointer
本文关键字:指针 更新时间:2023-10-16
我想向另一个对象发送一个"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?
}
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
是一个静态函数。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错