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

use*_*860 0 c++ objective-c

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

请指教.

@protocol A <NSObject>

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

@end


@interface callBack: NSObject
{
    id<A*> delegate;
}
Run Code Online (Sandbox Code Playgroud)

Gab*_*lla 5

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

"协议"声明

class ImageDelegate {
    public:
        virtual void getImage(UIImage *) = 0;
}
Run Code Online (Sandbox Code Playgroud)

然后ImageDelegate*像你一样参考id<ImageDelegate>

class ResInfoCallback : public NSObject {
    public:
       ImageDelegate *delegate;
}
Run Code Online (Sandbox Code Playgroud)

最后,您需要一个实现"协议"的类,这意味着重写virtual"协议"类的纯方法.

class YourClassConformingToTheProtocol : public ImageDelegate {
    public:
        virtual void getImage(UIImage *image) {
            //do stuff
        }
}
Run Code Online (Sandbox Code Playgroud)

作为最后的评论,使用大写的名称.