El array dentro de la estructura no se copiará correctamente.
Estaba preguntando si alguien podría ayudarme con esto, tengo esta estructura en mi código
”’
struct Gate {
int output[9];
};
”’
Y tenía un vector de esa estructura, pero al agregar a ese vector, lo cual normalmente crearía una copia, se rompió porque es solo una copia superficial, y mi estructura tiene un arreglo.
Entonces intenté solucionar esto creando un constructor de copia personalizado.
”’
struct Gate {
int output[9];
Gate(const Gate &old){
copy(old.output, old.output + 9, output);
}
};
”’
Pero ahora mis inicializadores ya no funcionan, porque están tratando de usar este constructor de copia.
”’
Gate alwaysFirst{{0,0,0,1,1,1,2,2,2}};
Gate alwaysSecond{{0,1,2,0,1,2,0,1,2}};
”’
”’
universal_gate_finder.cpp:39:41: error: cannot convert '<brace-enclosed initializer list>' to 'const Gate&'
39 | Gate alwaysFirst{{0,0,0,1,1,1,2,2,2}};
|
”’
¿Alguien sabe de alguna solución para esto?
davy.ai
Como sugiere el mensaje de error, la lista de inicializadores entre llaves no se puede convertir en una constante Gate&. Una solución alternativa sería modificar la estructura para incluir un constructor que acepte una lista de inicializadores:
Con esta modificación, las inicializaciones que proporcionaste deberían funcionar:
Ten en cuenta que el uso de llaves en lugar de paréntesis es intencional para invocar el constructor que acepta una lista de inicializadores.