@interface figure : NSObject
@property float height;
@property int weight;
@property int handLength;
@implementation figure
@end
@interface person : NSObject
{
figure *shencai;
}
@property int age;
@end
@implementation person
@end
int main(int argc, const char * argv[])
{
person *p =[person new];
p.age = 10;
p->shencai.height = 180;//疑问就在这里
//我想既然组合之后person类的对象包扩了figure的所有成员变量和方法,
//那我应该可以直接访问给他赋值啊。。。可是这样的方法是错误的?
//那到底组合之后,person类创立的对象有没有开辟内存给figure的成员变量?
//它在内存里面到底是怎么分配的啊 ,正确的访问方法是什么??
return 0;
}
1 个解决方案
#1
这是C语言区,不光有C++的,怎么OC都来了。。
不是写OC的,不过这样貌似可以
不是写OC的,不过这样貌似可以
#import <Foundation/Foundation.h>
@interface figure : NSObject
@property float height;
@property int weight;
@property int handLength;
@end
@implementation figure
@end
@interface person : NSObject
@property figure *shencai;
@property int age;
@end
@implementation person
@end
int main(int argc, const char * argv[])
{
@autoreleasepool {
person *p = [person new];
p.shencai = [figure new];
p.age = 10;
p.shencai.height = 123;
NSLog(@"%f\n", p.shencai.height);
}
return 0;
}
#1
这是C语言区,不光有C++的,怎么OC都来了。。
不是写OC的,不过这样貌似可以
不是写OC的,不过这样貌似可以
#import <Foundation/Foundation.h>
@interface figure : NSObject
@property float height;
@property int weight;
@property int handLength;
@end
@implementation figure
@end
@interface person : NSObject
@property figure *shencai;
@property int age;
@end
@implementation person
@end
int main(int argc, const char * argv[])
{
@autoreleasepool {
person *p = [person new];
p.shencai = [figure new];
p.age = 10;
p.shencai.height = 123;
NSLog(@"%f\n", p.shencai.height);
}
return 0;
}