0

我有两个类,其中实现包含一个名为“geometryCoords”的数组,在“Corridor”类中它在声明中初始化,在“RhombusArray”中它在“init”方法中完成:

GLfloat _geometryCoords[]={/*Values here*/};

GLfloat _geometryCoords[];
...//In the init method
_geometryCoords = (GLfloat*)malloc(somevalue);
for(...){/*Assignment*/}

在调试此方法时,我注意到“geometryCoords”在传递初始化代码之前具有第一个类的数组的值。将“RhombusArray”中的数组声明更改为:

GLfloat _geometryCoords[];

GLfloat* _geometryCoords;

我收到“Apple Mach-o 链接器错误:/BlaBla/Corridor.o 和 /BlaBla/RhombusArray.o 中的重复符号 _geometryCoords”。这两个类的标题都被导入到 .mm 文件中,删除其中一个可以解决冲突。我应该如何处理这个问题?

4

1 回答 1

0

这两个数组都必须具有全局范围(即它们在函数之外和类接口之外声明),以便您获得链接器错误和其他问题。像这样声明它们:

static GLfloat _geometryCoords[]={/*Values here*/};
//^^^^ this is the new bit

static关键字使符号仅在.m声明它们的编译单元(文件)中可见。

于 2012-08-07T10:37:10.630 回答