我有两个类,其实现包含一个名为“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文件中,并删除其中一个解决了冲突。 我该如何处理这个问题?
答案 0 :(得分:0)
这两个数组都必须具有全局范围(即它们在函数外部和类接口之外声明),以便获取链接器错误和另一个问题。声明他们是这样的:
static GLfloat _geometryCoords[]={/*Values here*/};
//^^^^ this is the new bit
static
关键字使符号仅在声明它们的编译单元(.m
文件)中可见。