-1
我有一個typdef結構如下所示:C-結構來的NSArray
typedef struct {
float Position[3];
float Color[4];
float TexCoord[2];
} const Vertex;
我創建一個轉換器,我傳的位置,顏色和TexCoord成單獨的NSArray:
+ (void)arrayConverter: (Vertex *) v
{
// Turn typeDef struct into seperate arrays
NSValue *positionData = [NSValue valueWithBytes:&v->Position objCType:@encode(Vertex)];
NSArray *positionArray = [NSArray arrayWithObjects:positionData, nil];
[positionData getValue:&v->Position]; // where I get error
NSMutableDictionary *vertexdata = [[NSMutableDictionary alloc] init];
[vertexdata setObject:positionArray forKey:@"Position"];
NSLog(@"\n Vertex data: %@\n",vertexdata);
}
我正在通過的頂點:
const Vertex Iso_Vertices[] = {
{{ -X, 0.0, Z }, {1, 0, 0, 1}, {1, 0}},
{{ X, 0.0, Z }, {0, 1, 0, 1}, {1, 1}},
{{ -X, 0.0, -Z }, {0, 0, 1, 1}, {0, 1}},
{{ X, 0.0, -Z }, {0, 0, 0, 1}, {0, 0}},
{{ 0.0, Z, X }, {1, 0, 0, 1}, {0, 1}},
{{ 0.0, Z, -X }, {0, 1, 0, 1}, {1, 0}},
{{ 0.0, -Z, X }, {0, 0, 1, 1}, {0, 0}},
{{ 0.0, -Z, -X }, {0, 0, 0, 1}, {1, 1}},
{{ Z, X, 0.0 }, {1, 0, 0, 1}, {1, 0}},
{{ -Z, X, 0.0 }, {0, 1, 0, 1}, {1, 1}},
{{ Z, -X, 0.0 }, {0, 0, 1, 1}, {0, 1}},
{{ -Z, -X, 0.0 }, {0, 0, 0, 1}, {0, 0}},
};
這個錯誤是什麼意思? 發送'float const(*)[3]到類型'void *'的參數丟棄限定符
看起來好像我可以得到這個工作,我想如何。有什麼建議麼?
爲什麼要做'&v->位置?只需使用'v'。即'[positionData getValue:v];' –
這意味着NSArray需要一個_non-const_參數,而您傳入的數據被限定爲_const_。你可以拋棄常量:插入一個強制類型'(void *)'。但也許考慮trojanfoe的回答 – nielsbot
這是非常基本的。我建議你閱讀1.一本好的入門C書,2.你正在使用的特殊'NSValue'方法的文檔。如果你已經完成了這兩個任務,或者最好是這兩個,你就不必問這個問題。 – 2013-08-02 06:26:16