将目标C协议转换为c ++中的等效协议

时间:2013-01-03 22:38:41

标签: c++ objective-c

我正在将一个从Obj-C移植到C ++的游戏。并且卡在我必须将Obj-C协议转换为C ++中的等效协议的地方。我很困惑应该是在C ++中实现相同功能的正确方法。

请告知。

@protocol A <NSObject>

    -(void) B:(NSObject*)data;

@end


@interface callBack: NSObject
{
    id<A*> delegate;
}

1 个答案:

答案 0 :(得分:5)

您可以使用纯virtual方法实现类似于创建类的协议。 符合该协议将需要覆盖此类方法。

“协议”声明

class ImageDelegate {
    public:
        virtual void getImage(UIImage *) = 0;
}

然后像使用ImageDelegate*

一样参考id<ImageDelegate>
class ResInfoCallback : public NSObject {
    public:
       ImageDelegate *delegate;
}

最后,您需要一个实现“协议”的类,这意味着覆盖“协议”类的纯virtual方法。

class YourClassConformingToTheProtocol : public ImageDelegate {
    public:
        virtual void getImage(UIImage *image) {
            //do stuff
        }
}

最后一句话为类使用大写名称。