2012-04-17 112 views
2

我的工作包含類別中的一個簡單的Objective-C程序Visability。我班的.h:分類。變量

#import <Foundation/Foundation.h> 

@interface Fraction : NSObject 

@property int numerator, denominator; 

-(void)setNumerator:(int)n andDenominator:(int)d; 

@end 

在.m文件我合成我numeratordenominator。在main.m創建了Fraction類的類別:

#import "Fraction.h"  
@interface Fraction (MathOps) 
-(Fraction *) add: (Fraction *) f; 
@end 

@implementation Fraction (MathOps) 
-(Fraction *) add: (Fraction *) f 
{ 
    // To add two fractions: 
    // a/b + c/d = ((a*d) + (b*c))/(b * d) 
    Fraction *result = [[Fraction alloc] init]; 
    result.numerator = (numerator * f.denominator) + 
    (denominator * f.numerator); 
    result.denominator = denominator * f.denominator; 
    [result reduce]; 
    return result; 
} 
@end 

但我的程序沒有看到numeratordenominator在類的實現部分。 。錯誤「使用未聲明的標識符‘分子’(同爲分母)的我在做什麼錯

+1

self.numerator? – lnafziger 2012-04-17 15:15:23

回答

5

使用屬性,而不是直接使用高德:

result.numerator = (self.numerator * f.denominator) + (self.denominator * f.numerator); 
result.denominator = self.denominator * f.denominator; 

的實例變量是不可見您的類別,因爲他們沒有在分數的接口中聲明的 - 當你在實施@synthesize他們他們只創造了通向其他可能的解決方案,這是分數的接口來聲明實例變量:

@interface Fraction : NSObject { 
    int numerator; 
    int denominator; 
} 

@property int numerator, denominator; 

-(void)setNumerator:(int)n andDenominator:(int)d; 

@end