c++ - 为用于 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++ 编写的内容。
解决方案
推荐阅读
- javascript - 无法使用授权代码流向 Web Playback API 进行身份验证
- ruby-on-rails - 如何让路由助手使用现有参数?
- react-native - npm start 命令在本机反应中给出错误
- google-apps-script - 谷歌应用脚本没有遍历所有文件
- java - 如何在自定义对象中循环遍历 ArrayList?
- python - 根据 txt 文件加载复选框值
- reactjs - 使用 React Hooks 处理连续相同的 useFetch 调用的最佳实践?
- javascript - Jquery 在一个函数内部工作,但只针对其中一个调用,另一个我必须在 Chrome 控制台中手动执行
- windows - 如何使用 Windows 批处理文件合并由文件名的某些初始字符串分组的多个 CSV 文件,没有标题(第一个除外)
- json - 使用日期参数删除重复项