首页 > 解决方案 > 为用于 Objective-C 的 C++ Factory 类编写包装器

问题描述

我有一个 C++ 工厂类,我需要在 Objective-C 项目中使用它,所以我正在尝试为它编写一个包装器。

下面是 Widget 类的超类定义。

class Widget
{
    public:
        Widget();
        virtual ~Widget();

        virtual Thingamajig getThingamajig() = 0;
};

工厂会返回一个Widget的子类,Objective-C程序会使用Widget提供的Thingamajig(Thingamajig的细节我省略了——假设它是一个非常简单的数据容器类)。

这是工厂类:

    class WidgetFactory
    {
        public:

            /*...a series of integer constants defining the different types of widgets to be returned by 
createWidget function below.*/ 

            WidgetFactory();
            ~WidgetFactory();

            Widget* createWidget( int type );
    };

因为我写的是包装器,所以工厂类中的createWidget方法是非静态的(createWidget原本是静态的)。

现在,这就是我迄今为止所拥有的 Objective-C 包装器。它是 Objective-C++(mm 文件)的头文件:

@interface WidgetFactoryWrapper: NSObject
@end

@interface WidgetFactoryWrapper()
-(Widget*) createWidget: (int)type;
@end

以下是我的问题:

1)我从这里的另一篇 SO 文章(从 Objective-C 调用 C++ )中得到了编写这样的包装器的想法。但是,我认为在这里编写另一个使用 Objective-C++ 包装器的 Objective-C++ 类 CplusplusMMClass 之类的东西的最后一步是不必要的——我应该直接在这里调用 Objective-C++ 包装器。我的想法不正确吗?

2) 虽然我接受我必须为 Widget 编写一个包装器,但我是否必须为它的所有子类这样做?

3)如果你是我众所周知的鞋子,你会怎么做?

我很想将所有内容都翻译成 Objective-C,但我希望能够重用已经用 C++ 编写的内容。

标签: c++objective-cfactory

解决方案


推荐阅读