如何在c++; 我在C++中有向量问题。我是C++新手,请记住这个问题。< /P>
因此,在我的程序开始时,我有以下结构:如何在c++; 我在C++中有向量问题。我是C++新手,请记住这个问题。< /P>,c++,vector,struct,C++,Vector,Struct,因此,在我的程序开始时,我有以下结构: 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; };
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;
<> P>在主体的中间,我尝试使用:
grupo->vertices.push_back(x);
但它一直在破坏程序。我正在使用VisualStudio,并使用调试模式。我可以看到,当把X推到崩溃的向量时(X有一个值)。我尝试将向量更改为浮点数组。所以我能想象的问题是向量的初始化。。。你能帮我做点什么吗
因为你使用C++,所以 < P>如果要动态创建
grupo
,应使用new
运算符和构造函数:
grupo = new grupo();
<代码> Malc 没有正确初始化C++对象,如<代码> STD::vector < /C> > /<
S。我不确定什么是<代码> GROPO-> MODMOS//COD>和
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;
};
<> P> >我建议您多读一些关于C++语言的内容,以及它不是C.< /P> < P> C++,不需要声明中的Type。 要正确初始化结构,您应该编写一个ctor来替换编译器提供的ctor(它通常不执行任何操作) 类似于以下内容(只有几个属性):
这个问题与[c]无关,所以请不要给它加标签。@AnttiHaapala你是对的,对此很抱歉。我发现变量与结构同名非常令人困惑。另外,请尝试完全去掉指针和
malloc()
。试着用std::vector
或其他stl容器来完成这一切。这是有效的:D只是想知道,这是否会使我的结构上的所有浮点和整数的默认值为0?或者我应该在结构中强制使用它来生成它们吗?您应该阅读有关构造函数的内容,并且在不需要时不应该使用指针。否pods没有默认值(int,chars..),除非您指定它。char**?-我很少用它。只有一个例外。“int main(int argv,char*argv[]);”,可以写成“int main(int argv,char**argv);”
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( ... );
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;
grupo grupo1(1.0, 2.0, 3, 4);
grupo grupo2(3.0, 4.0, 5, 6);
// etc.