2012-08-07 54 views
0

我有兩個類,它的實現包含一個名爲「geometryCoords」的數組,在「Corridor」類中它在聲明中初始化,在「RhombusArray」中它在「init」方法中完成:Objective-C @implementation變量的可見性

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

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

在調試該方法我注意到,「geometryCoords」傳遞初始化代碼之前具有第一類的數組的值。更改陣列的宣言 「RhombusArray」 之後:

GLfloat _geometryCoords[]; 

GLfloat* _geometryCoords; 

我得到了一個「蘋果的Mach-O鏈接錯誤:重複的符號_geometryCoords在/BlaBla/Corridor.o和/ BLABLA/RhombusArray.o」。 這兩個類的頭文件都被導入到.mm文件中,並刪除其中的一個可以解決衝突。 我該如何處理這個問題?

回答

0

這兩個數組都必須具有全局作用域(即它們在函數之外和類接口之外聲明),以便獲得鏈接器錯誤和其他問題。聲明他們是這樣的:

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

static關鍵字使符號只內聲明它們編譯單元(在.m文件)可見。

+0

Thad做的工作,謝謝。 – user1570730 2012-08-07 10:45:20