如何在C ++中的结构中初始化向量

彼得·L

我在C ++中遇到向量问题。我是C ++的新手,所以请记住这一点。

因此,在程序开始时我具有以下结构:

typedef struct grupo
{
    float transX, transY, transZ, rotX, rotY, rotZ, rotAngle, scaleX, scaleY, scaleZ;
    char **modelos;
    struct grupo** grupos;
    int nNomes = 0, nGrupos=0;
    std::vector<float> vertices;
};

struct grupo *grupo;

我就是这样开始主程序的:

grupo = (struct grupo*)malloc(sizeof(struct grupo));
grupo->modelos = (char **)malloc(sizeof(1));
grupo->grupos = (struct grupo **)malloc(sizeof(struct grupo));

在main的中间,我试图使用它:

grupo->vertices.push_back(x);

但是它总是使程序崩溃。我正在使用Visual Studio,并使用调试模式。我可以看到,这是当将X推到崩溃的向量上时(x有一个值)。我试图将向量更改为浮点数数组。所以我可以想象的问题是向量的初始化...您能帮我解决一下吗?

谢谢 :)

安蒂·哈帕拉(Antti Haapala)

由于您使用的是C ++;如果要grupo动态创建,则应使用new带有构造函数运算符:

grupo = new grupo();

malloc不能正确初始化C ++对象,例如std::vector


PS我不确定grupo->modelosgrupo->grupos应该是什么,但是我会为它们使用适当的C ++类型(也许modelos应该是std::string,等等)。此外,我怀疑你有一个*太多都modelosgrupos

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章