iOS如何包装C++;Swift项目中的类 我在C++中有一个静态库,现在我想在我的新SWIFT项目中使用这个库。我发现我不能在SWIFT项目中直接使用C++类,所以我必须在OC包装这个库。然后,我在包装这个时遇到了一些问题: //AbstractClassA.h #include <string> class AbstractClassA { public: virtual string getString() = 0; virtual int getInt() = 0; virtual ~AbstractClassA() {}; }; //AbstractClassB.h class AbstractClassB { public: virtual void function(int a) = 0; virtual ~AbstractClassB() {}; }; //ChildA.h #include "AbstractClassA.h" #include "AbstractClassB.h" class ChildA : public AbstractClassA { public: ChildA(int a = 640); ChildA( AbstractClassB* classb, int a = 640); virtual ~ChildA(); string getString(); int getInt(); protected: int a; string b; }; //AbstractClassA.h #包括 类抽象类{ 公众: 虚拟字符串getString()=0; 虚拟int getInt()=0; 虚拟~AbstractClassA(){}; }; //抽象类B.h 类抽象类B{ 公众: 虚空函数(inta)=0; 虚拟~AbstractClassB(){}; }; //奇尔达·h #包括“AbstractClassA.h” #包括“AbstractClassB.h” ChildA类:公共抽象类 { 公众: ChildA(INTA=640); ChildA(抽象类b*classb,int a=640); 虚拟~ChildA(); 字符串getString(); int getInt(); 受保护的: INTA; b串; };
如何在OC中包装这些类?谢谢你的帮助 > p>创建一个包C++类的ObjuleC++类。头文件必须不包含任何C++特征;带有实现的文件必须以.mm结尾,才能告诉Xcode使用Objective-C++编译器,而不是Objective-C 在.h文件中,您将有一个用于类ChildAWrapper、方法init、initWithInt:、initWithClassB:、initWithClassB:Int:以及只读属性stringValue和intValue的接口 在.mm文件中,有一个ChildA*类型的实例变量。init方法创建一个ChildA对象。dealloc删除它。通过调用ChildA对象的方法,将std::string转换为NSString*,可以实现这些属性iOS如何包装C++;Swift项目中的类 我在C++中有一个静态库,现在我想在我的新SWIFT项目中使用这个库。我发现我不能在SWIFT项目中直接使用C++类,所以我必须在OC包装这个库。然后,我在包装这个时遇到了一些问题: //AbstractClassA.h #include <string> class AbstractClassA { public: virtual string getString() = 0; virtual int getInt() = 0; virtual ~AbstractClassA() {}; }; //AbstractClassB.h class AbstractClassB { public: virtual void function(int a) = 0; virtual ~AbstractClassB() {}; }; //ChildA.h #include "AbstractClassA.h" #include "AbstractClassB.h" class ChildA : public AbstractClassA { public: ChildA(int a = 640); ChildA( AbstractClassB* classb, int a = 640); virtual ~ChildA(); string getString(); int getInt(); protected: int a; string b; }; //AbstractClassA.h #包括 类抽象类{ 公众: 虚拟字符串getString()=0; 虚拟int getInt()=0; 虚拟~AbstractClassA(){}; }; //抽象类B.h 类抽象类B{ 公众: 虚空函数(inta)=0; 虚拟~AbstractClassB(){}; }; //奇尔达·h #包括“AbstractClassA.h” #包括“AbstractClassB.h” ChildA类:公共抽象类 { 公众: ChildA(INTA=640); ChildA(抽象类b*classb,int a=640); 虚拟~ChildA(); 字符串getString(); int getInt(); 受保护的: INTA; b串; };,ios,Ios,如何在OC中包装这些类?谢谢你的帮助 > p>创建一个包C++类的ObjuleC++类。头文件必须不包含任何C++特征;带有实现的文件必须以.mm结尾,才能告诉Xcode使用Objective-C++编译器,而不是Objective-C 在.h文件中,您将有一个用于类ChildAWrapper、方法init、initWithInt:、initWithClassB:、initWithClassB:Int:以及只读属性stringValue和intValue的接口 在.mm文件中,有一个ChildA
同样适用于B类和Objective-C类说唱者。在这里,您需要一个只读属性void*wrappedClass返回指向ClassB对象的指针,并转换为void*,因为ChildaRapper将需要它 可悲的是,这也是我的理解。这是一个很大的工作。很抱歉迟到了,我想不出ClassBWrapper,你能给我看一下代码片段吗?在ChildAWrapper中,我实际上需要什么方法?initWithAbstractClassB:还是initWithAbstractClassBWrapper?