Tôi có một lớp Objective-C chứa cấu trúc kiểu C. Tôi cần gọi hàm C chuyển một con trỏ tới thành viên đối tượng này (thuộc tính a.k.a.). Đối với cuộc sống của tôi, tôi không thể tìm ra cách để có được địa chỉ của cấu trúc C này. Sử dụng toán tử &
truyền thống để lấy địa chỉ, tôi nhận được lỗi trình biên dịch LValue.Nhận địa chỉ của thuộc tính Objective-c (là cấu trúc C)
typedef struct _myStruct
{
int aNumber;
}MyStruct, *pMyStruct;
@interface MyClass : NSObject {
MyStruct mystruct;
}
@property (readwrite) MyStruct myStruct;
@end
Kết quả mã sau vào một lỗi biên dịch:
MyClass* myClass = [[MyClass alloc] init];
MyStruct* p = &(myClass.myStruct);
Làm thế nào để có được một con trỏ đến myStruct
thành viên của đối tượng myClass
?
Tôi không biết điều này có hiệu quả không, nhưng hãy thử MyStruct * p = (MyStruct *) & (myClass.myStruct.aNumber); –
Toán tử & toán tử mất một giá trị. Kết quả của một cuộc gọi phương thức là một rvalue. – Chuck