2011-01-08 34 views
1

在我的代碼中,當我嘗試獲取指向我的類屬性的指針時,出現此錯誤。
(我寫在Python小* obj文件翻譯,丟棄法線)
CODE:Objective C需要作爲一元'&'操作數的LValue


//line: line of text 
const char *str = [line UTF8String]; 
Point3D *p1, *p2, *p3; 
p1 = [Point3D makeX:0 Y:0 Z:0]; 
p2 = [Point3D makeX:0 Y:0 Z:0]; 
p3 = [Point3D makeX:0 Y:0 Z:0]; 
sscanf(str, "t %f,%f,%f %f,%f,%f %f,%f,%f",(&[p1 x]),&([p1 y]),&([p1 z]),&([p2 x]),&([p2 y]),&([p2 z]),&([p3 x]),&([p3 y]),&([p3 z])); 
Triangle3D *tri = [Triangle3D make:p1 p2:p2 p3:p3]; 

回答

4

xyz信息存取?我猜是這樣。然後他們返回值的副本(因爲Objective-C沒有引用的概念),並且你傳遞給臨時對象的函數指針,並因此傳遞錯誤。

您應該使用局部變量來獲取sscanf函數的值。類似的東西:

const char *str = [line UTF8String]; 
float p1x, p1y, p1z, p2x, p2y, p2z, p3x, p3y, p3x; 
sscanf(str, "t %f,%f,%f %f,%f,%f %f,%f,%f", 
     &p1x, &p1y, &p1z, &p2x, &p2y, &p2z, &p3x, &p3y, &p3x); 
Point3D *p1, *p2, *p3; 
p1 = [Point3D makeX:p1x Y:p1y Z:p1z]; 
p2 = [Point3D makeX:p2x Y:p2y Z:p2z]; 
p3 = [Point3D makeX:p3x Y:p3y Z:p3z]; 
Triangle3D *tri = [Triangle3D make:p1 p2:p2 p3:p3]; 
+0

好吧......但是,這是很多的變量...編輯:我要去使用數組然後 – Bob 2011-01-09 00:17:37

相關問題