【发布时间】:2013-09-11 22:42:36
【问题描述】:
类 A 有一个类 B 的实例作为成员。有时 B 类的实例想与 A 类对话。在 Objective-C 中我可以这样做:
// A.h
@interface A : NSObject <BDelegate>
@property (nonatomic, retain) B *b;
@end
// A.m
- (void) classBsays {
}
// B.h
@protocol BDelegate
- (void) classBsays;
@end
@interface B : NSObject
@property (nonatomic, assign) id<BDelegate> delegate;
@end
// B.m
@implementation B
- (void) f {
[delegate classBsays];
}
@end
我在 C++ 中使用 B 类上的 void 指针做了类似的事情。但这错过了“B 类的委托应该实现这样那样的方法”的部分。
如何在 C++ 中模仿 Objective-C 的协议?
【问题讨论】:
-
只有纯虚成员函数的 C++ 类(基本介绍请参见 this)大致相当于 Objective-C 协议。
标签: c++ objective-c delegates