You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++指针变量的模板推导:如何省略冗余模板参数?

解决模板类指针无需重复指定模板参数的方法

你遇到的问题是模板类指针必须显式指定模板参数,不想用auto又嫌重复书写冗余,下面是几种满足你需求的方案:

1. 用类型别名简化声明

先给实例化的模板类定义一个别名,后续指针直接用别名声明,既能明确看到具体类型,又避免重复写模板参数:

using ObjectType = object<128>;
ObjectType Object;
ObjectType* ObjectPointer = &Object;

这里ObjectType清晰对应object<128>,指针声明时直接复用别名,代码更简洁且类型明确。

2. 借助decltype推导并复用类型

用decltype获取已定义对象的类型,再用这个类型声明指针,同样能显式看到类型:

object<128> Object;
using ObjectType = decltype(Object);
ObjectType* ObjectPointer = &Object;

或者直接在指针声明中使用decltype:

object<128> Object;
decltype(Object)* ObjectPointer = &Object;

decltype(Object)会被编译器推导为object<128>,这样既不用重复写模板参数,又能通过decltype(Object)*明确知道指针的类型。

3. 用辅助函数生成指针

写一个简单的模板辅助函数,自动推导参数类型并返回指针,声明指针时依然显式写出完整类型:

template<typename T>
T* get_ptr(T& obj) {
    return &obj;
}

// 使用示例
object<128> Object;
object<128>* ObjectPointer = get_ptr(Object);

这种方式下,你只需要在指针声明时写一次完整类型,辅助函数帮你完成取地址的操作,避免了手动写&Object时的模板参数重复问题。

内容的提问来源于stack exchange,提问作者hacksoi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 21:39:17