by Anonymous » 12 Jul 2025, 23:01
Wie erstelle ich eine C ++ - Klasse, die Swift mit einem Destruktor zusammenarbeiten kann? Zum Beispiel: < /p>
// C++
namespace Name {
class Foo
{
public:
Foo() = default;
Foo(uint32_t i); // implemented in .cpp file
~Foo(); // implemented in .cpp file
};
}
// Swift
import cxxLib
let bar = Name.Foo(2)
< /code>
Schreiben dieses Codes gibt mir einen Fehler: < /p>
main.swift: error: 'Foo' is unavailable: non-trivial C++ class with trivial ABI is not yet available in Swift
let bar = Name.Foo(2)
^~~
__ObjC.cv:3:19: note: 'Foo' has been explicitly marked unavailable here
public struct Foo {
^
< /code>
Wenn ich den Destruktor entferne, funktioniert der Code gut. Klassen in der C ++ - Standardbibliothek können verwendet werden, wenn ein Typ -Alias für die Vorlage erstellt wird. Diese Klasse muss Zerstörer für den freien Speicher haben. Wie kann ich dies also erreichen?>
Wie erstelle ich eine C ++ - Klasse, die Swift mit einem Destruktor zusammenarbeiten kann? Zum Beispiel: < /p>
// C++
namespace Name {
class Foo
{
public:
Foo() = default;
Foo(uint32_t i); // implemented in .cpp file
~Foo(); // implemented in .cpp file
};
}
// Swift
import cxxLib
let bar = Name.Foo(2)
< /code>
Schreiben dieses Codes gibt mir einen Fehler: < /p>
main.swift: error: 'Foo' is unavailable: non-trivial C++ class with trivial ABI is not yet available in Swift
let bar = Name.Foo(2)
^~~
__ObjC.cv:3:19: note: 'Foo' has been explicitly marked unavailable here
public struct Foo {
^
< /code>
Wenn ich den Destruktor entferne, funktioniert der Code gut. Klassen in der C ++ - Standardbibliothek können verwendet werden, wenn ein Typ -Alias für die Vorlage erstellt wird. Diese Klasse muss Zerstörer für den freien Speicher haben. Wie kann ich dies also erreichen?>