Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用C++;对象';来自Objective-C子对象的s方法 我有一些Objul-C++代码,我试图从ObjtoE-C对象中获取事件,以调用C++对象中的方法。我对Objective-C非常陌生,所以我可能做得都不对_C++_Objective C_Objective C++ - Fatal编程技术网

调用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;
}