我在“ 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 ...

07-28 03:14