Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.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
C+的类型转换+;将数据结构转换为Swift 我试图使用SWIFT中的C++代码。我需要一些语言之间类型转换的帮助。大多数情况下,我都希望能将C++数据结构转换成快速理解的形式的代码示例。p> 例如,我在C++文件中有以下方法。_C++_Ios_Objective C_Swift_Type Conversion - Fatal编程技术网

C+的类型转换+;将数据结构转换为Swift 我试图使用SWIFT中的C++代码。我需要一些语言之间类型转换的帮助。大多数情况下,我都希望能将C++数据结构转换成快速理解的形式的代码示例。p> 例如,我在C++文件中有以下方法。

C+的类型转换+;将数据结构转换为Swift 我试图使用SWIFT中的C++代码。我需要一些语言之间类型转换的帮助。大多数情况下,我都希望能将C++数据结构转换成快速理解的形式的代码示例。p> 例如,我在C++文件中有以下方法。,c++,ios,objective-c,swift,type-conversion,C++,Ios,Objective C,Swift,Type Conversion,struct IntPoint { cInt X; cInt Y; }; typedef std::vector< IntPoint > Path; void MinkowskiSum(const Path& pattern, const Path& path, Paths& solution, bool pathIsClosed) { Minkowski(pattern, path, solution, true, pathIsC

struct IntPoint {
    cInt X;
    cInt Y;
};

typedef std::vector< IntPoint > Path;

void MinkowskiSum(const Path& pattern, const Path& path, Paths& solution, bool pathIsClosed)
{
    Minkowski(pattern, path, solution, true, pathIsClosed);
    Clipper c;
    c.AddPaths(solution, ptSubject, true);
    c.Execute(ctUnion, solution, pftNonZero, pftNonZero);
}
我有一个桥接头.h文件,让Swift理解并查看“void MinkowskiSum(const Path&pattern,const Path&Path,Path&solution,bool pathiscosed);”方法


和Swift和C++完全通信,只要我使用诸如INT的原始数据结构,但是我想使用自定义结构,如PATH(如上所述)。我非常感谢将C++路径转换为SWIFT的代码示例。P> < P>你不能轻易地通过C++ STL容器。正如书中所说:

不能直接导入C++代码到SWIFT。相反,为C++代码创建Objto-C或C包装器。 不过也没那么糟。Swift数组非常类似于用于构建输入数据的STL向量

struct IntPoint {
    let x: CInt
    let y: CInt
}

var path = [IntPoint(x: 0, y: 0)]
path.append(IntPoint(x: 1, y: 1))
然后可以将该
路径
数组传递到C函数中:

void f(const IntPoint* x);
在Swift中变为:

func f(x: UnsafePointer<IntPoint>)

// callable as:
f(path)
func g(x: UnsafeMutablePointer<IntPoint>)

// callable as:
g(&path)
在Swift中变为:

func f(x: UnsafePointer<IntPoint>)

// callable as:
f(path)
func g(x: UnsafeMutablePointer<IntPoint>)

// callable as:
g(&path)
func g(x:UnsafeMutablePointer)
//可调用为:
g(路径(&P)

这可能不如传递向量或快速数组,因为如果你在数组中传递,也必须传递元素计数,但是记住数组指针就像C++ STL迭代器一样。


这样,如果你的代码> McKoWSKISUM < /Cl>是用STL算法风格编写的,它可以把一个开始和结束迭代器放到一个通用容器中,你可以在C桥函数中轻松地转换它们,把指针加上一个计数,然后再把C++的算法调用。我试图将该Swift文件包含到带有#include reference的头文件中(参见上面的内容)。然而,Xcode不断抛出“找不到”错误。你能猜出我错过了什么吗?我已设置产品模块名称,并将模块定义为“是”。