2011-01-08 55 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

相关问题