Union vs. static_cast (void *)
Estou escrevendo código e até agora estava usando estruturas como esta:
struct s{
enum Types { zero = 0, one, two };
unsigned int type;
void* data;
}
Eu precisava de uma estrutura genérica para armazenar dados de diferentes classes e eu queria usá-los em std :: vector, por isso não posso usar modelos. Qual a melhor opção: uniões ou ponteiros nulos?
ponteiro @Void aloca apenas o espaço necessário, mas o c ++ é uma linguagem de tipo forte por algum motivo e a transmissão em todos os lugares em que preciso usar esses dados não é a maneira como o código c ++ deve ser projetado. Enquanto leio, ponteiros nulos não devem ser usados, a menos que não haja alternativ
ssa alternativa pode ser sindicatos. Eles vêm com c ++ e usam o mesmo espaço de memória para todos os membros, como os ponteiros nulos. No entanto, eles têm um preço - o espaço alocado é do tamanho do maior elemento em união e, no meu caso, as diferenças entre os tamanhos são grande
Este é um problema bastante estilístico e de "linguagem correta usando", pois as duas maneiras realizam o que eu preciso fazer, mas não consigo decidir se o código c ++ estilizado pode pagar por essa memória desperdiçada (mesmo que a memória hoje em dia não seja uma grande preocupação