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的协议呢?