在Swift中公开C ++公共头文件(包含侦听器)

时间:2018-01-12 15:07:20

标签: c++ ios objective-c swift listener

我有一个用C ++编码的静态库,我也有一些标题可以让库的用户创建这些类的实例。

当我创建一些Objective-C包装器来使用库时,我创建了桥文件,这些文件在" swift side"中被曝光良好。

我的问题是我还有C ++类,这些类是C ++库所使用的侦听器(这些类具有纯虚方法)。我想在Swift中使用这些Listeners类(或协议)(强制用户实现纯虚方法)并将它们传递给C ++库。

例如,我有一个使用Listeners的类:

#ifndef FUNCTION_EXECUTOR_H
#define FUNCTION_EXECUTOR_H

#include "ResultListener.h"

namespace test {

    class FunctionExecutor {

        public:

            // Method that consumes the listener
            void setListener(ResultListener* listener);

        private:

            ResultListener* _listener;

    };

}

#endif

听众:

#ifndef RESULT_LISTENER_H
#define RESULT_LISTENER_H

namespace test {

    class ResultListener  {

        public:

            virtual void listenResult(int result) = 0;

    };

}

#endif

是否有一种有效的方式来揭露"倾听者" class并让用户使用swift强制使用纯虚方法来创建该类的实现?

0 个答案:

没有答案