我在 C++ 中遇到 vector 问题。我是 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,并使用 Debug模式。我可以看到,当将 X 推到崩溃的 vector 时(x 有一个值)。我试图将 vector 更改为 float 组。所以我可以想象的问题是 vector 的初始化......你能帮我解决我遗漏的问题吗?
谢谢你:)
最佳答案
您正在使用 C++,除非出于特定原因,否则不需要“new”或 malloc 关键字。您不需要结构的 typedef。
我不确定你的 char** 应该是什么,但你可以使用 std::string 作为字符串。
也许你想做的是这样的:
struct Grupo
{
float transX, transY, transZ, rotX, rotY, rotZ, rotAngle, scaleX, scaleY, scaleZ;
std::string modelos;
int nNomes = 0, nGrupos=0;
std::vector<float> vertices;
};
主要内容:
Grupo grupo;
grupo.vertices.push_back( ... );
然后我会建议您阅读更多关于什么是 C++ 语言以及它为什么不是 C 的内容。
关于c++ - 如何在C++中初始化结构中的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36391062/