ですから、これは私が学んでいる本の演習です。私は演習をうまく行っており、それを除いてほとんどを理解していますが、ここで何かが完全に欠けているかどうかはわかりませんが...コンパイラはどのようにしてそれを知っているのですか:
x = 168.354 および y = 987.259 は (XYPoint ) pt*に属します
そしてそれ
x = 10.00 および y = 10.00 は (XYPoint ) t*に属します
myPoint と myTranslate が XYPoint クラスなどの個別のオブジェクトであり、それらが X と Y が格納されているメモリ参照を指していることを理解していますが、上記の値をptとtにどのように割り当てるのでしょうか。ここで何か大きなものを見逃していますか?
前もって感謝します。
コードは次のとおりです。
インターフェース
#import "XYPoint.h"
#import <Foundation/Foundation.h>
@interface Rectangle : NSObject
@property float width, height;
-(XYPoint*) origin;
-(void) translate: (XYPoint *)t;
-(void) setOrigin: (XYPoint *) pt;
-(float) area;
-(float) perimiter;
-(void) setHeight:(float) h andWidth: (float) w;
@end
Implementation
#import "Rectangle.h"
#import "XYPoint.h"
@implementation Rectangle
{
XYPoint *origin ;
}
@synthesize height, width;
-(void) setHeight: (float) h andWidth: (float) w;
{
width = w;
height = h;
}
-(void) setOrigin:(XYPoint *)pt
{
if (! origin)
origin = [[XYPoint alloc]init];
origin.x = pt.x;
origin.y = pt.y;
}
-(void) translate: (XYPoint*)t
{
origin.x = origin.x + t.x;
origin.y = origin.y + t.y;
}
-(float) area
{
return width * height;
}
-(float) perimiter
{
return (width + height) * 2;
}
-(XYPoint *) origin
{
return origin;
}
@end
主要
#import "XYPoint.h"
#import "rectangle.h"
#import "Square.h"
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
Rectangle *myRect = [[Rectangle alloc]init];
XYPoint *myPoint = [[XYPoint alloc]init];
XYPoint *myTranslate = [[XYPoint alloc] init];
[myPoint setX: 168.354 andY: 987.259];
[myTranslate setX: 10.00 andY: 10.00 ];
myRect.origin = myPoint;
NSLog (@"Origin at %f, %f", myRect.origin.x, myRect.origin.y);
[myRect translate: myTranslate];
NSLog (@"Origin at %f, %f", myRect.origin.x, myRect.origin.y);
}
return 0;
}
出力:
168.354004、987.258972 の起点 178.354004、997.258972 に変換