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

如何在同一hpp文件的另一类中声明类模板RBT_COMMON_PACKAGE的指针

错误根因

RBT_COMMON_PACKAGE是带两个参数的类模板,模板本身不是可直接使用的具体类型,必须传入模板参数实例化后才能用来声明变量或指针,所以编译器会抛出2955错误。
除此之外你的原始代码还存在两处语法问题:

  • 模板前向声明后多写了分号,两个类的定义结尾都缺少必需的分号
  • 模板类的类体没有和模板声明绑定

解决方案

场景1:PROTECT类固定使用某组参数的RBT_COMMON_PACKAGE

如果你确定p0、p1只会指向某组固定参数的RBT_COMMON_PACKAGE实例,直接在声明指针时补全模板参数即可:

template< class T , int N>
class RBT_COMMON_PACKAGE
{
public:
    COORDINATES start;      
    COORDINATES target;     
    RBT_CAR      world_start;   
    RBT_CAR      world_target;  
    //RBT_CAR_PNT        via;       
    int                  prep;      
    int                  type;      
}; // 类定义结尾必须加补分号

class PROTECT
{
private:
    // 示例参数为T=int、N=10,可替换为你实际需要的参数
    RBT_COMMON_PACKAGE<int, 10> *p0;
    RBT_COMMON_PACKAGE<int, 10> *p1;
}; // 类定义结尾必须加补分号

场景2:PROTECT类需要适配不同参数的RBT_COMMON_PACKAGE

把PROTECT也定义为模板类,将RBT_COMMON_PACKAGE需要的参数作为PROTECT的模板参数传递即可:

template< class T , int N>
class RBT_COMMON_PACKAGE
{
public:
    COORDINATES start;      
    COORDINATES target;     
    RBT_CAR      world_start;   
    RBT_CAR      world_target;  
    int                  prep;      
    int                  type;      
};

// PROTECT定义为模板类,接收和RBT_COMMON_PACKAGE一致的模板参数
template< class T , int N>
class PROTECT
{
private:
    RBT_COMMON_PACKAGE<T, N> *p0;
    RBT_COMMON_PACKAGE<T, N> *p1;
};

场景3:PROTECT的成员指针需要指向任意参数的RBT_COMMON_PACKAGE实例

给RBT_COMMON_PACKAGE新增一个非模板基类,所有模板实例都继承这个基类,PROTECT内存储基类指针即可:

// 非模板基类,可定义公共虚接口
class RBT_COMMON_PACKAGE_BASE
{
public:
    virtual ~RBT_COMMON_PACKAGE_BASE() = default;
    int prep;      
    int type;   
};

template< class T , int N>
class RBT_COMMON_PACKAGE : public RBT_COMMON_PACKAGE_BASE
{
public:
    COORDINATES start;      
    COORDINATES target;     
    RBT_CAR      world_start;   
    RBT_CAR      world_target;  
};

class PROTECT
{
private:
    // 基类指针可指向任意模板参数的RBT_COMMON_PACKAGE实例
    RBT_COMMON_PACKAGE_BASE *p0;
    RBT_COMMON_PACKAGE_BASE *p1;
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:24:07