Код: Выделить всё
struct
SWIFT_NONCOPYABLE
CppStruct {
CppStruct() {}
CppStruct(const CppStruct&);
CppStruct(const CppStruct&&);
~CppStruct();
};
Код: Выделить всё
public class SwiftProcessor {
public init() { }
public func processCppStruct(_ x : borrowing CppStruct) {
print("Processing a CppStruct..")
}
}
Код: Выделить всё
SwiftProcessor proc = SwiftProcessor::init();
CppStruct cppStruct;
proc.processCppStruct(cppStruct);
Код: Выделить всё
no member named 'processCppStruct' in 'SwiftProcessor'Это в Ubuntu. Аналогичная ошибка сообщается в MacOS с использованием Xcode. Если SWIFT_NONCOPYABLE удален, это работает нормально на обеих платформах. В обоих случаях используется Swift 6.2.
Код Swift не будет компилироваться без указателя владения. Изменение заимствования на потребление или inout не помогает.
Похоже, что некопируемый тип C++ не может быть передан из C++ в метод Swift. Есть идеи, почему и как это обойти?
Подробнее здесь: https://stackoverflow.com/questions/797 ... t-function
Мобильная версия