调用C++;对象';来自Objective-C子对象的s方法 我有一些Objul-C++代码,我试图从ObjtoE-C对象中获取事件,以调用C++对象中的方法。我对Objective-C非常陌生,所以我可能做得都不对
例如:调用C++;对象';来自Objective-C子对象的s方法 我有一些Objul-C++代码,我试图从ObjtoE-C对象中获取事件,以调用C++对象中的方法。我对Objective-C非常陌生,所以我可能做得都不对,c++,objective-c,objective-c++,C++,Objective C,Objective C++,例如: @interface KnobClass { } -(void)Event; @end class DoorClass { public: KnobClass * knob; void start() { knob = [[KnobClass allocate] init]; } }; class AlarmClass { public: void Alert(); }; class HouseClass { public:
@interface KnobClass {
}
-(void)Event;
@end
class DoorClass {
public:
KnobClass * knob;
void start() { knob = [[KnobClass allocate] init]; }
};
class AlarmClass {
public:
void Alert();
};
class HouseClass {
public:
DoorClass door;
AlarmClass alarm;
};
int main() {
//...
HouseClass house;
house.door.start();
//...
return 0;
}
方法
[house.door.knob Event]
是在事件中生成的,我希望它能够调用house.alarm.Alert()
。但我对如何以正确的方式完成这一点感到困惑。有人能提出一个实现这一目标的方法吗?我也在学习Objective-C。这在gcc 4.3.3中适用:
#import <Foundation/Foundation.h>
class AlarmClass {
public:
void Alert() {
printf("Alert!\n");
}
};
@interface KnobClass: NSObject {
AlarmClass *alarm;
}
-(void)Event;
-(id)initWithAlarm:(AlarmClass*) alarm;
@end
@implementation KnobClass: NSObject
-(id)initWithAlarm:(AlarmClass*) a
{
self = [super init];
alarm = a;
return self;
}
-(void)Event
{
alarm->Alert();
}
@end
class DoorClass {
public:
KnobClass * knob;
void start(AlarmClass *a) {
knob = [[KnobClass alloc] initWithAlarm: a];
}
void doEvent() {
[knob Event];
}
};
class HouseClass {
public:
DoorClass door;
AlarmClass alarm;
};
int main(int argc, const char *argv[]) {
//...
HouseClass house;
house.door.start(&house.alarm);
house.door.doEvent();
//...
return 0;
}
#导入
类报警类{
公众:
无效警报(){
printf(“警报!\n”);
}
};
@接口KnobClass:NSObject{
AlarmClass*报警;
}
-(无效)事件;
-(id)initWithAlarm:(AlarmClass*)报警;
@结束
@实现KnobClass:NSObject
-(id)initWithAlarm:(AlarmClass*)a
{
self=[super init];
报警=a;
回归自我;
}
-(无效)事件
{
报警->报警();
}
@结束
门级{
公众:
旋钮类*旋钮;
无效启动(报警等级*a){
旋钮=[[KnobClass alloc]initWithAlarm:a];
}
void doEvent(){
[旋钮事件];
}
};
班级住房班级{
公众:
门类门;
报警等级报警;
};
int main(int argc,const char*argv[]{
//...
豪斯班之家;
房屋。门。启动(和房屋。警报);
house.doEvent();
//...
返回0;
}