如何在c++中初始化结构中的向量
How to initialize a vector in a struct in c++
我在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));
在正文的中间,我尝试使用这个:
grupo->vertices.push_back(x);
但它不断破坏程序。我正在使用visualstudio,并使用调试模式。我可以看到,当把X推到崩溃的向量上时(X有一个值)。我试着把向量改成一个浮点数组。所以我可以想象的问题是向量的初始化。。。你能帮我解决我缺少的东西吗?
谢谢:)
您使用的是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++;如果要动态创建grupo
,则应使用new
运算符和构造函数:
grupo = new grupo();
CCD_ 3不能正确地初始化诸如CCD_ 4之类的C++对象。
附言:我不确定grupo->modelos
和grupo->grupos
应该是什么,但我会为它们使用适当的C++类型(也许modelos
应该是std::string
,等等)。此外,我怀疑对于modelos
和grupos
来说,一个*
太多了。
C++在声明中不需要typedef。
要正确初始化结构,应该编写一个ctor来替换编译器提供的ctor(它通常什么都不做)。
类似以下内容(只有几个属性):
struct grupo
{
float transX, transY;
// ...
int nNomes;
int nGrupos;
std::vector<float> vertices;
// I prefer initialization list form
grupo() : transX(0.0),
transY(1.0),
// ...
nNomes(0),
nGrupos(0)
// vertices default ctor is ok, creates empty vector
{
// use vertices.push_back(...); to fill vertices
}
};
grupo grupo;
接下来,您将希望编写一个更有用的ctor,其中包含要使用的参数(而不是文字常量),这样您就可以构建多个grupo。
grupo grupo1(1.0, 2.0, 3, 4);
grupo grupo2(3.0, 4.0, 5, 6);
// etc.
相关文章:
- 将结构向量排序为子组
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 如何在 c++ 中创建结构向量的映射
- 带unique_ptr的结构向量
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 将信息输入到下面显示的结构向量中的正确语法/格式是什么
- C++对结构向量进行排序
- 在C++中对结构向量进行排序时出现问题
- 将结构向量保存到文件中,并从C++文件中读取结构向量
- 搜索并替换结构向量中的值
- 在结构向量中查找最接近的值
- 清除结构向量时会发生什么?
- 如何从 node-ffi 调用 c++ 中以结构向量作为参数的方法?
- 对结构向量进行两次排序
- 将一种数据类型的向量复制到同一数据类型的结构向量中的有效方法是什么
- 如何二进制搜索结构向量并在适当的索引处插入
- 结构向量中自定义结构函数的内存使用
- C++11-在结构向量中修改结构的成员
- 我正在尝试找到一个特定的结构成员,该成员是使用 lambda 函数的结构向量
- 在结构向量中搜索一个数据成员,然后打印匹配的所有数据成员