这是我在 Stack Overflow 上的第一个问题,这是一个很长的问题。thrust::device_vector<BaseClass>tl;dr 版本是:如果我希望 a 存储不同类型的对象,我该如何使用 aDerivedClass1,DerivedClass2a ?
我想利用 CUDA Thrust 的多态性。我正在编译一个-arch=sm_30GPU (GeForce GTX 670) 进行编译。
让我们看一下下面的问题:假设镇上有 80 户家庭。其中60户是已婚夫妇,20户是单亲家庭。因此,每个家庭都有不同数量的成员。现在是人口普查时间,家庭必须说明父母的年龄和孩子的数量。Family因此,政府构建了一个对象数组,thrust::device_vector<Family> familiesInTown(80)即家庭信息familiesInTown[0]对应familiesInTown[59]为已婚夫妇,其余信息(familiesInTown[60]为 )familiesInTown[79] ) 为单亲家庭。
Family是基类 - 家庭中父母的数量(单亲父母数量为 1,夫妻数量为 2)以及他们拥有的孩子数量作为成员存储在此处。SingleParent,派生自Family,包括一个新成员 - 单亲父母的年龄,unsigned int ageOfParent。MarriedCouple,也源自Family,但是,引入了两个新成员 - 父母的年龄,unsigned int ageOfParent1以及unsigned int ageOfParent2。