我包装了一个 C 接口,它有一个返回一个Value*
对象的加载函数,它指向一个动态的Value
对象数组:
typedef struct Value {
union {
int8_t i8;
int16_t i16;
int32_t i32;
int64_t i64;
bool b;
} value;
} Value_T;
给定数组中的对象始终属于同一类型。
我的想法是在 C++ 中表示如下:
typedef boost::variant<std::vector<bool>, std::vector<int8_t>, std::vector<int16_t>, std::vector<int32_t>, std::vector<int64_t>, std::vector<std::string> > Container;
这是合理的吗?我应该注意哪些陷阱?关于如何定义 bool 是否存在编译器特定的问题?我意识到 std::vector 在内部使用位表示,并且在这方面还有其他问题。
我正在使用 C++98 编译器。