具有由初始化程序决定的泛型类型的不安全可变指针参数的类

时间:2017-09-26 16:34:25

标签: swift generics

我正在尝试创建一个基于其关联类型进行不同操作的类。 Apon初始化我将一个类型传递给初始化器以及一些未显示的其他参数。我的困境是我要编写的以下代码,但由于编译器错误而无法解决。

class Foo
{
    var data: UnsafeMutablePointer<T>
    var type: T.Type
    init?<T>(type: T.Type)
    {
        data = UnsafeMutablePointer<T>
        self.type = type
    }

    func prepareForData()
    {
        data = UnsafeMutableRawPointer(memoryAddress + variableOffset).bindMemory(to:type.self, capacity:1)
    }
}

理论上将使用类,如

let thing = Foo(Int)let thing2 = Foo(coolStruct)

这在Swift中是否可能?

1 个答案:

答案 0 :(得分:1)

无法检查自己,但以下内容应该编译并正常运行:

class Foo<T>
{
    var data: UnsafeMutablePointer<T>
    var type: T.Type
    init?(type: T.Type)
    {
        data = UnsafeMutablePointer<T>()
        self.type = type
    }

    func prepareForData()
    {
        data = UnsafeMutableRawPointer(memoryAddress + variableOffset).bindMemory(to:type.self, capacity:1)
    }
}