OC中定义了一个结构体(struct),设置结构体的值

本文介绍在Objective-C中如何正确地为包含结构体成员的Person对象赋值,并展示了具体的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

main.m 文件

#import <Foundation/Foundation.h>

#import "Dog.h"

#import "Person.h"

#import "Student.h"



int main(int argc, const char * argv[]) {

    @autoreleasepool {

        

        Person *p1 = [[Person alloc] init];

        // 给对象中的结构体(struct)赋值 \

        如果直接用c语言的方式直接赋值就会报错,如s->birthday={1990,12,11};就会抛出错误    \

        声明并初始化一个struct类型临时变量,再整个赋值给birthday成员。

        Date d = {2015, 12, 22};

        p1.birthday = d;

        

    }

    return 0;

}


Person.h 文件

#import <Foundation/Foundation.h>

// 生日

typedef struct {

    int year; // 

    int month; // 

    int day; // 

} Date;

// 性别

typedef enum {

    XingBieMan,

    XingBieWoman

} XingBie;


@interface Person : NSObject


// 姓名的settergetter

@property (nonatomicretainNSString *name;


// 生日的settergetter

@property (nonatomicassignDate birthday;


// 年龄的settergetter

@property (nonatomicassignint age;


// 性别

@property (nonatomicassignXingBie sex;


// 身高

@property (nonatomicassigndouble height;


// 体重

@property (nonatomicassigndouble weight;

@end


### C++ 类内部定义结构体 在C++中,可以在类的内部定义结构体。这种做法有助于封装逻辑上紧密关联的数据和功能,使代码更加模块化和易于维护。 #### 定义方式 下面是一个简单的例子来展示如何在一个类内定义结构体: ```cpp class OuterClass { public: // 在类内部定义结构体 struct InnerStruct { int code; std::string name; void displayInfo() const { std::cout << "Code: " << code << ", Name: " << name << std::endl; } }; // 使用该结构体创建成员变量或方法参数 InnerStruct innerInstance; void setInnerData(int c, const std::string& n) { innerInstance.code = c; innerInstance.name = n; } void showInnerData() const { innerInstance.displayInfo(); } }; ``` 上述代码展示了`OuterClass`类内的`InnerStruct`结构体声明及其基本属性与行为[^1]。 #### 访问权限 需要注意的是,当在类中定义结构体时,默认情况下其成员仍然是公有的(public),除非显式指定其他访问级别(private 或 protected)[^3]。这与其他类型的类成员遵循相同的规则。 #### 实例化与使用 一旦定义好嵌套结构体之后,就可以像普通结构体一样对其进行实例化操作,并通过外部类的对象来进行调用了: ```cpp int main(){ OuterClass oc; // 设置内部结构体的数据 oc.setInnerData(100,"Example"); // 显示内部结构体的信息 oc.showInnerData(); return 0; } ``` 此段代码说明了如何利用外层类的方法间接设置并获取到内部结构体的具体数[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值