Dudas con C++

Tengo un par de dudas, a ver si me podéis echar una mano:
Quiero crear clases nuevas con cuyo nobre tiene que ser un número que se basa en una variable. Me explico, debería ser algo así:
for (i = 0; i < 10; i++)
       new clasei;

Quizá debería implementarlo en el constructor haciendo una concatenación o algo así.

(Relacionada con la anterior). Como accedería a una variable de la clase creada de la forma anterior. Es decir:
Tengo las clases:
clase1
clase2
clase3
...

for (i = 0; i < 10; i++)
      clasei.caracter=2;


No sé si se habrá entendido lo que pretendo.

A ver si alguien me puede atudar. GRACIAS!!!
Que yo sepa lo que pretendes es imposible hacerlo de esa manera. A mi se me ocurren dos soluciones:

Sin complicarse la vida:

for (i = 0; i < 10; i++)
       switch(i)
       {
              case 1:
              dondesea = newclase1();
              break;

              case 2:
              dondesea = newclase2();
              break;

              ...
       }


Y complicandosela siempre puedes hacer una funcion por cada tipo de clase que cree una instancia de esa clase, meter punteros de esas funciones en un array (la primera la que cree instancias de clase0, la segunda de clase1...) y llamarlas dentro del for:

for (i = 0; i < 10; i++)
      dondesea = funciones[i]();
Creo que me decantaré por un array de clases, ya que tengo que leer de un archivo caracteres y crear una clase por cada uno, hacer cases sería demasiado trabajoso (y feo), y la otra opción mucho curro. Hare algo así:
int numObjetos;
cout<<"Cuantos Objetos de la clase miClase quiere??";
cin>>numObjetos;
miClase* array = new miClase[numObjetos];
for(int i=0;1<numObjetos;i++)
    array[i] = new miClase;


Lo dejo por si le puede servir a alguien :p

un saludo!!!
Hombre, eso no tiene nada que ver con lo que estas poniendo arriba. Arriba ponías que tenías que crear instancias de diferentes clases (es decir, new Clase1(), new Clase2()... o eso es lo qeu yo he entendido con lo de "new clasei") y lo que tienes aquí abajo es un array de instancias de la misma clase.
Entonces me he explicado mal [+risas]
Como bien dices son instancias de una misma clase, lo que me interesaba era el nombre.
manugarrote escribió:Creo que me decantaré por un array de clases, ya que tengo que leer de un archivo caracteres y crear una clase por cada uno, hacer cases sería demasiado trabajoso (y feo), y la otra opción mucho curro. Hare algo así:
int numObjetos;
cout<<"Cuantos Objetos de la clase miClase quiere??";
cin>>numObjetos;
miClase* array = new miClase[numObjetos];
for(int i=0;1<numObjetos;i++)
    array[i] = new miClase;


Lo dejo por si le puede servir a alguien :p

un saludo!!!


Este codigo esta bien? Porque con miClase[numObjetos] ya reservas la memoria para todos no? Entonces, para que un nuevo new? :S Vamos, yo diria que eso esta mal
Puede ser que este mal porque tengo C++ bastante oxidado, lo que he estado pensando han sido los algoritmos. Si alguien me lo puede corregir... si no, en cuanto me lo repase lo arreglo yo ;D
int numObjetos;
cout<<"Cuantos Objetos de la clase miClase quiere??";
cin>>numObjetos;
miClase* array = new miClase[numObjetos];
for(int i=0;1<numObjetos;i++)
array[i].nombre = i


Y tendras el objeto 1,2,3,4,5,6,7,8...numObjetos

O bien

int numObjetos;
cout<<"Cuantos Objetos de la clase miClase quiere??";
cin>>numObjetos;
miClase* array = new miClase[numObjetos];
for(int i=0;1<numObjetos;i++)
{
cout<<"Introduce el nombre del objeto"<<endl;
cin >> array[i].nombre;
}
(mensaje borrado)
Efectivamente eso está mal. Si lo que quieres declarar es un array de elementos miClase declarados dinámicamente tienes que crear un array de punteros a miClase

int numObjetos;
cout<<"Cuantos Objetos de la clase miClase quiere??";
cin>>numObjetos;
miClase** array = new miClase*[numObjetos];
for(int i=0;1<numObjetos;i++)
    array[i] = new miClase;


Y recuerda que tienes que borrar cada elemento del array por separado, usando otro bucle for.
9 respuestas