结构体 枚举作类的成员属性:
定义一个学生类
性别 -- 枚举
生日 入学日期 毕业日期 -- 结构体
代码示例:
声明文件 Student.h:
#import <Foundation/Foundation.h> typedef struct { int year; int month; int day; } Date; typedef enum { kGenderGirl = 0, kGenderBoy = 1, kGenderChunGe = 2 } Gender; @interface Student : NSObject { @public int _age; NSString* _name; Gender _gender; // 生日 Date _birthday; // 入学时间 Date _entranceTime; // 毕业时间 Date _graduation; } // 自我介绍 - (void) selfIntroduce; // 枚举值转换为性别 + (NSString*) getGenderByEnumValue:(Gender) gender; @end
实现文件 Student.m:
#import "Student.h" @implementation Student // 输出信息 - (void)selfIntroduce{ // 实例方法中调用类方法 NSString* gender = [[self class] getGenderByEnumValue:_gender]; // 实例方法访问成员变量 NSLog(@"大家好,我是:%@, 性别:%@, 年龄:%i, 我是 %i年%i月%i号 破壳的 上天安排我在 %i年%i月%i号 进入本校来虐死你们 哈哈 %i年%i月%i号 虐死你们后 哥就走了", _name, gender, _age, _birthday.year, _birthday.month, _birthday.day, _entranceTime.year, _entranceTime.month, _entranceTime.day, _graduation.year, _graduation.month, _graduation.day); } // 性别枚举值转换为字符串 + (NSString *)getGenderByEnumValue:(Gender)gender{ NSString* sex; switch (gender) { case 0: sex = @"女"; break; case 1: sex = @"男"; break; case 2: sex = @"春哥"; break; default: sex = @"我是妖"; break; } return sex; } @end
Main.m:
#import <Foundation/Foundation.h> #import "Student.h" int main(int argc, const char * argv[]) { Student * stu = [Student new]; stu->_name = @"小马"; stu->_age = 30; stu->_gender = kGenderChunGe; // 结构体成员赋值 方式一 stu->_birthday = (Date){1985, 11, 11}; // 方式二 stu->_entranceTime.year = 2000; stu->_entranceTime.month = 9; stu->_entranceTime.day = 23; // 方式三 Date date = {.year = 2004, .month = 9, .day = 21}; stu->_graduation = date; [stu selfIntroduce]; return 0; }
/*
2015-08-27 23:58:16.727 结构体 枚举做类成员[938:44544] 大家好,我是:小马, 性别:春哥, 年龄:30, 我是 1985年11月11号 破壳的 上天安排我在 2000年9月23号 进入本校来虐死你们 哈哈 2004年9月21号 虐死你们后 哥就走了
*/
时间: 2024-10-13 18:45:34