我在“ parser.h”中有一个这样的结构
struct obj{
char *filename;
unsigned long nverts;
unsigned long curvert;
double (*verts)[3];
unsigned int *faces[3];
};
typedef obj obj;
并在parser.cpp中
我在宣布
obj objmesh;
objmesh.filename="c://temp//wings.obj";
objmesh.nverts = 20;
objmesh.verts = (double (*)[3]) malloc( objmesh.nverts * sizeof(double[3]) );
objmesh.curvert = 0;
当我在parser.cpp的顶部进行这些设置时,出现“'objmesh'未命名类型”错误。
但是,当我将所有这些赋值放在parser.cpp中的函数中(而obj objmesh;具有全局范围)时,我没有错误并且可以正常编译。
谁能想到是这样的原因?我正在使用Mingw Gnu 4.6 C ++编译器
最佳答案
您需要在一个函数内进行赋值,例如:
obj objmesh;
...
int main(int argc, char **argv)
{
... possibly other stuff here...
objmesh.filename="c://temp//wings.obj";
objmesh.nverts = 20;
objmesh.verts = (double (*)[3]) malloc( objmesh.nverts * sizeof(double[3]) );
objmesh.curvert = 0;
... More code here ...
}
顺便说说:
double (*)[3])
乞求一个typedef ...