gpt4 book ai didi

c++ - 从基本类型的 vector 访问派生成员

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:58:53 26 4
gpt4 key购买 nike

假设我有这样的情况:

class Vertex
{
public:
Position position;
Normal normal;
Texcoord texcoord;
int boneID;
};

class VertexSkinned: public Vertex
{
public:
float boneWeights[3];
int boneIDs[3];
};

class VertexMorphed: public Vertex
{
public:
Position posTargets[3];
Normal normTargets[3];
Texcoord texcoordTargets[3];
};

std::vector<Vertex> vertices;

VertexSkinned vs;
VertexMorphed vm;
Vertex v;

vertices.push_back( vs );
vertices.push_back( vm );
vertices.push_back( v );

// This is illegal right? But how would I go about achieving the desired effect
float someFloat = vertices.front().boneWeights[2];

问题在评论中。我很少使用继承,并认为我可能在这里找到了有益的用途,尽管这似乎是不可能的。

我假设使用指针 vector 然后动态转换到派生类是否可行?但这不是我想要做的。

最佳答案

你有一个切片问题。 sizeof(VertexSkinned) 和 sizeof(VertexMorphed) 与 sizeof(Vertex) 不相等,不能插入到数组中。改用指针

要访问派生类的成员,首先必须确定指定项是否为派生类型。一种选择是在 Base 中添加一个 GetType 函数或使用 dynamic_cast

关于c++ - 从基本类型的 vector 访问派生成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5509756/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com