Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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如何包装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

如何在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*,可以实现这些属性


同样适用于B类和Objective-C类说唱者。在这里,您需要一个只读属性void*wrappedClass返回指向ClassB对象的指针,并转换为void*,因为ChildaRapper将需要它

可悲的是,这也是我的理解。这是一个很大的工作。很抱歉迟到了,我想不出ClassBWrapper,你能给我看一下代码片段吗?在ChildAWrapper中,我实际上需要什么方法?initWithAbstractClassB:还是initWithAbstractClassBWrapper?