final class SwiftCppClass { private let cppClass: UnsafeMutableRawPointer var storedValue: String! { get { guard let currentValue = getStoredValue(cppClass), let currentString = String(utf8String: currentValue) else { return nil } return currentString } set { setNewStoredValue(cppClass, (newValue as NSString).utf8String) } } init(storedValue: String) { cppClass = makeObject((storedValue as NSString).utf8String) } deinit { removeObject(cppClass) } }