A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tianlin 中级黑马   /  2015-3-16 13:28  /  1222 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /* 学生
  2. */
  3. #import <Foundation/Foundation.h>
  4. typedef enum
  5. {
  6.     SexMan,
  7.     SexWoman
  8. }Sex;
  9. typedef struct
  10. {
  11.     int year;
  12.     int mouth;
  13.     int day;
  14. }Date;
  15. typedef enum
  16. {
  17.     ColorBlack,
  18.     ColorRed,
  19.     ColorGreen
  20. }Color;

  21. @interface  Dog : NSObject
  22. {
  23.     @public
  24.     double weight;
  25.     Color curColor;
  26. }
  27. -(void)eat;
  28. -(void)run;

  29. @end

  30. @implementation Dog
  31. - (void) eat
  32. {
  33.     weight+=1;
  34.     NSLog(@"狗吃完这次后体重是%f",weight);
  35. }

  36. - (void) run
  37. {
  38.     weight-=1;
  39.     NSLog(@"狗跑完这次体重是%f",weight);
  40. }

  41. @end

  42. @interface Student : NSObject
  43. {
  44.     @public
  45.     Sex sex;
  46.     Date birthday;
  47.     double weight;
  48.     Color favColor;
  49.     char *name;
  50.     Dog *dog;
  51. }
  52. - (void)eat;
  53. - (void)run;
  54. - (void)print;
  55. - (void)liuDog;
  56. - (void)weiDog;
  57. @end

  58. @implementation Student
  59. - (void) eat
  60. {
  61.     weight+=1;
  62.     NSLog(@"吃完这次后体重是%f",weight);
  63. }

  64. - (void) run
  65. {
  66.     weight-=1;
  67.     NSLog(@"跑完这次体重是%f",weight);
  68. }
  69. -(void) print
  70. {
  71.     NSLog(@"性别=%d, 颜色=%d, 生日=%d-%d-%d 姓名%s",sex,favColor,birthday.year,birthday.mouth,birthday.day,name);
  72. }
  73. - (void)liuDog
  74. {
  75.     [dog run];
  76. }
  77. - (void)weiDog
  78. {
  79.     [dog eat];
  80. }

  81. @end

  82. int main()
  83. {
  84.     Student *s = [Student new];
  85.    
  86.     //Dog *d = [Dog new]; 这是视频中的写法,给类中的类赋值,必须用这种方式??
  87.     //d->curColor = ColorGreen;
  88.     //d->weight = 20;
  89.     //s->dog = d;
  90.     s->dog->weight = 100;
  91.     s->dog->curColor = ColorGreen;
  92.     [s liuDog];
  93.     [s weiDog];
  94.    
  95.     return 0;
  96. }
复制代码


编译连接没有错误,但是执行的时候出现  Segmentation fault: 11的提示  什么意思

6 个回复

倒序浏览
没人回答呢
回复 使用道具 举报
//Dog *d = [Dog new]; 这是视频中的写法,给类中的类赋值,必须用这种方式??
    //d->curColor = ColorGreen;
    //d->weight = 20;
    //s->dog = d;
    s->dog->weight = 100;
    s->dog->curColor = ColorGreen;

这段代码必须用你注释的一段代码,不能 s->dog->weight = 100;
    s->dog->curColor = ColorGreen;这样写。。。。视频中老师专门强调过得。。。。
回复 使用道具 举报
应该是这//s->dog = d;这段不能注释掉的原因,
回复 使用道具 举报
还有- (void)liuDog:(Dog *)d
{
    [d run];
}
- (void)weiDog:(Dog *)d
{
    [d eat];
}这两个方法要加参数,没有参数怎么知道,是哪只狗呢??
回复 使用道具 举报
好深奥啊
回复 使用道具 举报
liboy 中级黑马 2015-3-17 17:18:15
7#
liboy 发表于 2015-3-17 16:46
还有- (void)liuDogDog *)d
{
    [d run];

这刚才说错了我,搞错了不需要改,不好意思,呵呵:#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马