我对operator ->
Objective-C 有疑问。
我想在 ObjC 类上使用 C++ 包装器。
所以我创建了我的课程:
@interface User : NSObject
@property (nonatomic, copy) NSString *name;
@end
以及包装类:
class UserWrapper {
User *_user;
// ctors, accessors, etc.
operator User *(){
return _user;
}
User *operator->(){
return _user;
}
};
当我尝试通过operator User*
它访问支持对象时效果很好:
UserWrapper wrapper([User new]);
[wrapper setName:@"alex"];
NSLog(@"%@", [wrapper name]);
但是当我尝试通过operator ->
UserWrapper wrapper([User new]);
[wrapper setName:@"alex"];
NSLog(@"%@", wrapper->name);
我有以下错误:
Property 'name' found on object of type 'User *'; did you mean to access it with the "." operator?
看来我的理解operator ->
是错误的。
有人对我做错了什么以及如何解决这个问题有解释吗?
也许还有另一种直接访问支持对象的方法?