Im Allgemeinen versuche ich std :: variant zu verwenden, um einen deklarativen "union enum" -Typ zu erstellen, den ich brauche, um einen Ort in einer Liste zu beschreiben (UITableView/UICollectionView et.al) .swifty objective-C++ mit std :: variant
In Swift das ist genau das, was ich tun muss:
enum Location {
case Header
case Footer
case Index(NSIndexPath)
}
Meine API entweder ermöglicht mit dem „Header“ Standort (beliebige Kombination von Abschnitt und Zeile 0), der Fußzeile (und Kombination von Abschnitt Aufruf und dynamische Zeilennummer, die sich gemäß dem Abschnitt ändert) oder ein spezifischer Indexpfad.
in C++ Ich glaube, dass es ein std::variant
http://en.cppreference.com/w/cpp/utility/variant ist, die dieses Verhalten erlaubt:
ich dies in Objective-C++, aber Fehler bekommen Compiler
enum class Location {
Header,
Footer
};
std::variant<Location,Index> location ; (NSIndexPath *)
Wenn ich #include (or #import) <variant>
aufzunehmen versuchen zu tun, muss ich bekommen ein Compilerfehler, der variant file not found
in XCode.
Jeder Weg, dies zu tun?
'std :: variant' ist ein C++ 17-Feature, das von dem von Ihnen verwendeten Compiler möglicherweise nicht unterstützt wird. –
Ich werde Ihre Antwort akzeptieren, wenn Sie möchten –