2011-01-08 6 views
1

私のコードでは、を試してみると、このエラーが発生し、クラスプロパティへのポインタが取得されます。
(私は法線を破棄し、Pythonで小さな* .OBJファイルトランスレータを書いた)
CODE:目的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に渡しているため、エラーになります。

ローカル変数を使用して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

[OK]を...しかし、それは変数... EDITがたくさんあります:Imは、他のオプションは、これらのプロパティの裏アイバーズがパブリックにすることです – Bob

+0

、配列を使用する予定。その後、 - >を使用してそれらにアクセスし、通常のアドレスを取得できます。これには他の問題もあります –

関連する問題