programacion basica c++ switch y otras cosas

bueno
empiezo con la pregunta del switch que me parece la mas tonta.

si tenemos un menu inicial que dice
hacer cosa 1
hacer cosa 2

yo entro en el 1 y luego cuando hago algo en el 2 quiero volver al 1, como hago?
resumiendo, como paso de un submenu al principal o de un submenu 2 al anterior?

y la otra pregunta

yo creo un objeto de una clase y lo llamo con una funcion

coche ibiza
ibiza.arrancar();

como hago para crear un objeto que tenga el nombre de lo que hay en una variable de tipo char* o string lo que sea? y tb para invocarlo.
do
{
switch (loquesea)
    case loquesea1:
          blablabla;
    case loquesea2:
          blablabla;
}while(algo);

Lo otro... pues no lo se :/
Salu2!!! ;D
Para crear objetos ... están los constructores x'D
Más concretamente no te puedo decir por que no me he enterado mu bien... xD

Edito: Ahora que lo pienso es por ejemplo hacer esto:
Tenemos clase coche
si por ejemplo queremos que cuando se cree un coche se guarde la marca de él cnd lo creamos...
(tenemos en el objeto un char tipocoche [50]; por ejemplo


funciones de coche.....

void coche (char * fabricante) //lo que sería un constructor estoy algo oxidao con c++
{
strcmp(tipocoche,fabricante);

}

Supongo que sería algo así , repito hace muchos meses que no toco c++

Salu2
si weno
lo del swithc es que crei que habia alguna instruccion que no era break que servia pa eso

de lo constuir objetos me explico

imaginate
que durante el programa tu pides un nombre
cin>>nombre;
el user escribe manolito

si tienes la clase Niño
pos crear Niño manolito

no se si se puede o no porque parece que crear objetos en tiempo de ejecucion esta jodido no?

edito: acabo de ver mensaje editado, seria strcpy no? y eso guardaria algo que se pase por teclado?
si tienes la clase Niño.
pos crear Niño manolito
no se si se puede o no porque parece que crear objetos en tiempo de ejecucion esta jodido no?


Crear objetos en tiempo de ejecución ... buff ke preguntitas en la sobremesa.. :)

Objetos podrás crear los que quieras .. pero tú quieres crear en tiempo de ejecución clases??? ( eso noooooo jeje )
En tu ejemplo... kieres decir que quieres llamar a una variable manolito???

No veo a donde quieres llegar con el ejemplo [tomaaa]

Salu2

EDITO: Juas desfase entre posts cuando andamos a la vez ... sí claro es strcpy qué tendría yo en la cabeza [+risas] [+risas] , con eso tendrías por cada objeto su tipo de coche por supuesto [+risas] .
Veo que te keda mucho caminar por C++... [+risas] , que vaya bien... y ya sabes si necesitas algo ... [barret]

Edito2: acabo de volver a verte .. [qmparto] [qmparto]
Si lo que quieres es que cada objeto contenga un campo con un nombre , es lo que te he docho antes , si quieres con ése nombre crear objetos que se llamen con tus nombres.. nop.. [qmparto] [qmparto] [qmparto] [qmparto]
digo
que hay una clase creada
y yo quiero crear objetos para ella
con los nombres que me pase el usuario

edito: me vale con crear porque llamar ya lo llamare con el nombre o lo que haya puesto que lo haya creado.

no me creo que no se pueda hacer eso... :(
no me creo que no se pueda hacer eso...


Y cual sería su utilidad??? , qué más da como se llamen las variables??? ( bueno , no da tanto igual ,sino os remito a mi compañera de C++ [poraki] [poraki] (la tenía vamos,mis nombres de variable no son de buen programador pero no veas lo k me río)) [jaja]

En serio, algún lenguaje de programación permite lo que quiere hacer marcgenou? ein?

Salu2
ehhhh vale
es que se puede hacer
pero de otra forma
voy a probarlo
y si os pica la curiosidad luego lo posteo


siiiiiiiii postea postea [fies]

Salu2
Más o menos creo que lo que quieres hacer es esto:

class Coche {
  public:
    Coche();
    Coche(String);
    void setMarca(String);
    String getMarca();
    ...
  private:
    String matricula;
    ...
    String marca;
};

Coche::Coche() {
    matricula=0000-BBB;
    marca="";
}

Coche::Coche(String m) {
    matricula=0000-BBB;
    marca=m;
}

void Coche::setMarca(String m) {
    marca=m;
}

String Coche::getMarca() {
    return marca;
}

main() {
    String miMarca;
    cout<<"Introduce marca: ";
    cin>>miMarca;
   
    Coche c1;
    c1.setMarca(miMarca);
    Coche c2(miMarca);
}
Lo que dice marcgenou se llama reflectividad (me costó pillar lo que quería decir :P), pero realmente no se para lo que necesitas :P, no se si te estarás liando.

En lenguajes como Java que tienen una API de reflectividad estructural bien fácil es una tontería, pero en C++, uff, yo nunca lo he usado, pero por lo que he visto tela marinera :P

EDITO: Tal como estoy hoy yo, ya no se si es eso lo que preguntas...

EDITO 2: No, no es esto lo que dices, refrectividad sería instanciar una clase sin haberlo hecho directamente en el código, lo que quieres es crear un objeto de nombre el que te pasen ¿no?
gracias por el ejemplo pero ahi ya sabes los objetos que vas a crear y les pones nombre y todo... y yo no se los objetos que voy a crear ni el nombre que debo ponerlos, toy mirando a ver que se me ocurre.
Sigo sin entender para que quieres hacer eso ein?, pon un ejemplo o algo de para qué :?
main() {

    int opcion, ncoches=0;
    Coche arrayCoches[kNCOCHES];

     do {
         opcion=crearMasCoches();
         if (opcion!=no) {
              cout<<"Introduce nueva marca: ";
              cin>>miMarca;
              arrayCoches[ncoches].setMarca(miMarca);
              ncoches++;
          }
      } while(opcion!=no);
}


Ahí ja no sabes cuantos coches vas a crear. Esta main perfectamente lo puedes transformar en una función tipo añadir nuevoCoches de una clase FlotaCoches, que tendrá el array de coche como variable de clase, por ejemplo.
si voy a poner el ejemplo que tengo que hacer que creo que estoy muy denso y no creo que sea necesario que este asi

a ver
tengo un arbol binary de busqueda de esos
que tiene nodos
que son dominios .es .com .tv .info

cada nodo de esos tiene un puntero a un arbol de subdominios por ejemplo terra.es eol.es manolito.es

y otro puntero a un arbol de ip's

tonces

lo que pasa es que yo tengo un abol principal
que esta creado de principio
pero segun me digan subdominios de segundo nivel tipo eol.es tendre que crear un arbol de subdominios que este apuntado por el punerto de subdominios del nodo .es y cuyo elemento sea eol

asi que para no requeteliarme con nombres genericos y eso queria ponerle el nombre del dominio inmediatamente superior jerarquicamente
por ejemplo en el arbol de subdominios es colgarian eol manolito y terra.
Lo que tu pides se llaman "variables variables" y solo están disponibles en lenguajes de más alto nivel como PHP en el que puedes hacer:

$loquesea = "hola";
$$loquesea = "alo"; // Esto crea $hola y le asigna alo

echo $hola; // Esto imprime alo


No se si es esto lo que quieres. Pero es que te explicas F A T A L :D

Si es eso, en C++ no way.

Salu2.Ferdy
pues puede ser lo que dice ferdy, pero tengo tal kakao en la cabeza que ya no se ni lo que quiero, asi que si no se lo que quiero normal que me explique fatal.
puede que sea eso que dices, lo cual es una gran putada si no hay.

de todas formas ultimo intento de explicacion brevisima

class niño{...}


char nombre[20]="pep";
cin>>nombre;

niño (lo que contenga nombre); //seria crear niño pep

va a ser lo que dice ferdy

gracias racmax pero creo que no es lo que busco.
Lo que tu pides se llaman "variables variables" y solo están disponibles en lenguajes de más alto nivel como PHP en el que puedes hacer:


Si está claro ,me faltan lenguajes por aprender [jaja] [jaja] ,Java , perl , php ... anda ke no me kedan ... [bye]

pd:Marcgenou , yo apayo a ferdy para c++, para lo que quieres hacer [agggtt] ,lástima

Salu2
Yo creo que necesitas descansar un poco :-)

No necesitas que el objeto se llame de una manera o de otra en especial, ya que teniéndolos en un árbol, no vas a poder usarlos directamente, tendrás que recorrer el árbol (de árboles en este caso) leyendo el atributo pertinente, y parándote cuando llegas a él, no tienes otra.

Si he entendido bien lo que quieres hacer, sería algo así:

Tienes una clase donde vas a guardar los elementos del primer árbol (dominios de primer órden) que contendrá el nombre del dominio y un árbol de la siguiente clase, otra para los del segundo subárbol (dominios de segundo orden) que contendrá el nombre del subdominio y un árbol de la siguiente clase, y otra para las IP's. Ésta útlima no sería del todo necesario que fuese una clase.

Luego si te dan un domino como elotrolado.net, sólo tendrías que buscar en el árbol que tienes directamente el dominio .net, una vez llegado a él, pedirle el árbol que contiene. Dentro de éste buscarías el nodo que tuviese como nombre elotrolado, y cuando lo tengas, pedirle la IP.

Esta es la estructura que creo que quieres hacer, sino se podría hacer mediante claves, asociando varios árboles...
17 respuestas