一般來說,我試圖使用std :: variant來創建一個聲明式的「聯合枚舉」類型,我需要在列表中描述一個位置(UITableView/UICollectionView et.al) 。swifty objective-C++ std :: variant
在斯威夫特這正是我需要做的:
enum Location {
case Header
case Footer
case Index(NSIndexPath)
}
我的API要麼允許與「頭」的位置(部分和行0的任意組合),頁腳(和部分的組合調用以及根據該部分而改變的動態行號)或特定索引路徑。
在C++中,我相信有一個std::variant
http://en.cppreference.com/w/cpp/utility/variant允許這種行爲:
我需要做這在Objective-C++,但是很多編譯器錯誤
enum class Location {
Header,
Footer
};
std::variant<Location,Index> location ; (NSIndexPath *)
當我嘗試包括#include (or #import) <variant>
我得到在XCode中出現variant file not found
的編譯器錯誤。
任何方式來做到這一點?
'std :: variant'是一個C++ 17功能,可能不支持您正在使用的編譯器。 –
如果您願意,我會接受您的答案 –