我有许多具体结构,我想将字段指定为可选(存在或不存在)。只是想知道人们有什么想法来实现这一目标。这是一个示例结构(字段也可以是其他结构,甚至是结构的向量):
struct LogonMessage_t
{
Header_t header; // this points to another struct containing all primitives
std::string username;
std::string password;
std::vector<LogonOption_t> LogonOptions;
int subaccountid;
std::string Text;
}
我想将所有字段默认为不存在并一一启用它们,也许在它们的设置器中。由于生成了这些结构,因此最好使用通用方法。
到目前为止,我的想法是:
- 指示字段是否已设置的字段位图
- 使用标记值("\0" 代表 std::string,-1 代表 int,-1.0f 代表 float
- 某种模板容器/代理封装每个字段以指示它是否已设置,有什么想法吗?我认为这可能是最好的方法。
顺便说一句,使用地图或其他 STL 容器来封装字段在这里不起作用,它们需要是具体的结构。