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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chain 中级黑马   /  2014-6-7 16:17  /  1308 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 chain 于 2014-6-7 21:39 编辑

为什么编译器总是报这个错呢? 求解答 ,谢谢

10.m:83:13: error: unknown receiver 'Point1'; did you mean
      'Point2D'?
    return [Point1 distanceWithOther:point2];
            ^~~~~~
            Point2D
10.m:10:12: note: 'Point2D' declared here
@interface Point2D : NSObject
           ^
10.m:83:20: warning: class method '+distanceWithOther:' not
      found (return type defaults to 'id')
      [-Wobjc-method-access]
    return [Point1 distanceWithOther:point2];
                   ^~~~~~~~~~~~~~~~~
10.m:83:12: error: returning 'id' from a function with
      incompatible result type 'double'
    return [Point1 distanceWithOther:point2];
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1 warning and 2 errors generated.
  1. #import <Foundation/Foundation.h>
  2. #import <math.h>

  3. @interface Point2D : NSObject
  4. {
  5.     double _x;
  6.     double _y;
  7. }

  8. // x的setter和getter
  9. - (void)setX:(double)x;
  10. - (double)x;

  11. // y的setter和getter
  12. - (void)setY:(double)y;
  13. - (double)y;

  14. //同时设置x和y
  15. - (void)setX:(double)x andY:(double)y;

  16. //计算和其他点的距离
  17. - (double)distanceWithOther:(Point2D *)other;

  18. //类方法计算两个点之间的距离
  19. + (double)distanceBetweenPoint1:(Point2D *)point1 andPoint2:(Point2D *)point2;

  20. @end

  21. @implementation Point2D

  22. // x的setter和getter
  23. - (void)setX:(double)x
  24. {
  25.     _x = x;
  26. }
  27. - (double)x
  28. {
  29.     return _x;
  30. }

  31. // y的setter和getter
  32. - (void)setY:(double)y
  33. {
  34.     _y = y;
  35. }
  36. - (double)y
  37. {
  38.     return _y;
  39. }

  40. //同时设置x和y
  41. - (void)setX:(double)x andY:(double)y
  42. {
  43.     _x = x;
  44.     _y = y;
  45. }

  46. //计算和其他点的距离
  47. - (double)distanceWithOther:(Point2D *)other
  48. {
  49.     //计算X的差值
  50.     double xMinus = [self x] - [other x];
  51.     //计算Y的差值
  52.     double yMinus = [self y] - [other y];
  53.     //计算X差值的平方
  54.     double xSquare = pow(xMinus,2);
  55.     //计算Y差值的平方
  56.     double ySquare = pow(yMinus,2);
  57.     //计算xMinus和yMinus的和的开跟
  58.     return sqrt(xSquare + ySquare);
  59. }

  60. //类方法计算两个点之间的距离
  61. + (double)distanceBetweenPoint1:(Point2D *)point1 andPoint2:(Point2D *)point2
  62. {
  63.     //代码重构
  64.     return [Point1 distanceWithOther:point2];
  65. }

  66. @end

  67. int main ()
  68. {
  69.     Point2D *point1 = [Point2D new];
  70.     Point2D *point2 = [Point2D new];
  71.     [point1 setX:20 andY:40];
  72.     [point2 setX:18 andY:28];
  73.     double c = [point1 distanceWithOther:point2];
  74.     double c1 = [Point2D distanceBetweenPoint1:point1 andPoint2:point2];
  75.     NSLog(@"%f----%f",c,c1);
  76.     return 0;
  77. }
复制代码





点评

有代码时候,请按代码插入格式插入代码,方便粘贴调试。  发表于 2014-6-7 20:26

评分

参与人数 1技术分 +1 收起 理由
傘が咲く + 1

查看全部评分

2 个回复

倒序浏览
太深奥里,看萌了亲
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马