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

使用Thrust Vector与CUDA时自定义类型向量初始化编译错误求助

问题解决:Thrust host_vector初始化自定义结构体的C2664编译错误

错误原因

你初始化host_vector<PhysicsData>时用了host_vector<PhysicsData> physicsDataVector(numPeople + 1, 0);,第二个参数0是整数类型,但Thrust的该构造函数要求传入const PhysicsData&类型的参数,编译器无法将整数隐式转换为你的自定义结构体PhysicsData,因此触发C2664类型转换错误。

解决方案

你的PhysicsData结构体已经定义了__device__ __host__修饰的默认构造函数,可通过以下方式正确初始化向量:

  • 方法1:仅指定元素数量,依赖默认构造函数
    直接让Thrust为每个元素调用默认构造函数初始化:

    host_vector<PhysicsData> physicsDataVector(numPeople + 1);
    
  • 方法2:传入自定义结构体实例
    显式创建一个PhysicsData实例作为初始化模板:

    PhysicsData defaultPhysicsData; // 用默认构造函数生成实例
    host_vector<PhysicsData> physicsDataVector(numPeople + 1, defaultPhysicsData);
    
  • 方法3:临时创建结构体实例传入
    直接在构造函数中临时生成PhysicsData实例:

    host_vector<PhysicsData> physicsDataVector(numPeople + 1, PhysicsData());
    

额外注意

确保你的vector3类型同样具备__device__ __host__修饰的默认构造函数,否则后续在设备端或主机端使用该结构体时可能出现其他编译错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 01:12:09