Tengo una clase que no es copiable (un hilo, por lo que no hay semántica de copia que tenga sentido), y quiero tener una 'matriz' amplia de estos, construida de manera idéntica con un constructor no predeterminado Tenga en cuenta que la matriz es de tamaño fijo.Construyendo "matriz" de objetos no procesables
Solo puedo usar el constructor predeterminado con las matrices C++, a menos que inicialice cada una de forma independiente.
Thread myArray[128]; // uses default constructor - wrong
Puedo hacer una lista de constructores de objetos y parámetros de forma explícita, pero eso es prolijo y feo
Thread myArray[128] = { Thread(params,...), Thread(params,...), ... x 128 ; // ugly
Parece que no puedo usar vectores stl porque el objeto no es copiable - caso de que el vector nunca cambia de tamaño ¡Supongo que el constructor realmente copia!
std::vector<Thread> myVector(128, Thread(params,...));// won't compile
La forma en que he pesar de hacer esto es con una matriz de punteros inteligentes y un bucle de inicialización, pero tal vez me falta algo:
¿Hay alguna otra manera - tal vez con los envases de impulso ¿o un tipo de contenedor diferente?
El uso de un puntero inteligente parece lo más sensato. No creo que haya una mejor manera. –
Si están "construidos de forma idéntica", ¿no puedes agregar un constructor predeterminado que haga eso? De lo contrario, vaya con @ Space_C0wb0y. –
La biblioteca Qt es una biblioteca bastante famosa, y manejan matrices de objetos no copiables (los widgets de GUI, totalmente no copiables) con punteros. Así que supongo que los indicadores inteligentes son el camino a seguir. – Fezvez