如何使以下计算器类工作?:
//Calculator.h
#import <Cocoa/Cocoa.h>
@interface Calculator : NSObject {
float initialNumber, operandNumber;
typedef enum{
additionOperation,
subtractionOperation,
multiplicationOperation,
divisionOperation
}operationType;
}
@property(readwrite) float initialNumber, operandNumber;
@property(readwrite) enum operationType; //Line 16
- (float) doOperation;
@end
在XCode 3.1.3中,我得到一个“错误:'typedef'之前的语法错误”和一个“warning:声明没有声明任何东西”在Calculator.h第16行
//Calculator.m
#import "Calculator.h"
@implementation Calculator
@synthesize initialNumber, operandNumber, operationType;
-(float) doOperation{
switch (self.operationType){ //Line 9
case 0:
return self.initialNumber + self.operandNumber;
break;
case 1:
return self.initialNumber - self.operandNumber;
break;
case 2:
return self.initialNumber * self.operandNumber;
break;
case 3:
return self.initialNumber / self.operandNumber;
break;
default:
return 0;
break;
}
}
@end
在实现中,XCode给了我“在接口中找不到属性'operationType'的声明”,“对成员'operationType'的请求不是结构或联合。”我正确地宣布我的词汇吗?
此外,在switch语句中,我可以使用“case additionOperation”还是必须使用“case 0”?
答案 0 :(得分:4)
将您的枚举声明移出类声明。你可以把它放在正上方。并且您可能希望将typedef重命名为“OperationType”。然后,在您现在声明的地方,声明该类型的变量:'OperationType operationType;'
答案 1 :(得分:0)
我收到了一些有趣的答案to similar question I asked here。看看,但要点是...
“像NSViewWidthSizable这样的typedef实际上是位掩码,其中 允许你喜欢的好的ORing操作“