... No se trata de comparar cadenas... sino de localizar un caracter en un vector
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: SARGE553413 en 24 Julio 2013, 14:25 PM
Eso mismo me planteba yo ( la vision de la clase en memoria) por eso preguntaba si si habia alguna manera de llamar al constructor de la clase B durante el casteo para construirla bien pero veo que no,ok.
Cita de: SARGE553413 en 24 Julio 2013, 14:25 PM
Sin embargo ahora mi pregunta es que pasa si la superclase es abstracta. Supongamos que tengo una superclase A y dos que heredan C y D. Si defino un metodo que devuelve un puntero a A, si que puedo castear una superclase a una de sus clases derivadas sin problema. Esto es porq dentro del metodo he construido el objeto como una de laa clases derivadas ( necesariamente porque esabstracta) ¿correcto?
class Animal
{
};
class Perro: public Animal
{
};
class Gato : public Animal
{
};
void main( )
{
Animal* gato = new Gato( );
Animal* perro = new Perro( );
Gato* gato1 = dynamic_cast< Gato* >( gato ); // ok
Gato* gato2 = static_cast< Gato* >( gato ); // ok pero menos seguro
Perro* perro1 = dynamic_cast< Perro* >( perro ); // ok
Perro* perro2 = static_cast< Perro* >( perro ); // ok pero menos seguro
Gato* aberracion1 = dynamic_cast< Gato* >( perro ); // devuelve 0.
Gato* aberracion2 = static_cast< Gato* >( perro ); // funciona pero la aplicación va a dar resultados incorrectos o casques.
Perro* aberracion3 = dynamic_cast< Perro* >( gato); // devuelve 0.
Perro* aberracion4 = static_cast< Perro* >( gato); // te funciona pero la aplicación va a dar resultados incorrectos o casques.
}
class Clase2{
list<Clase1> Lista;
public:
Clase2();
void funcion2();
};
void Clase2::funcion2(){
list<Clase1>::iterator it = Lista.begin();
for (; it != Lista.end(); it++)
{
it->funcion1(); // metodo uno
(*it).funcion1( ); // metodo dos
}
}
Clase* clase = *it;
clase->funcion1( );
for(p=0 ; p<61 ; p++)
{
comodin=tiempoCaracteres[p];
if( comodin == recvBuff[ 0 ] )
{
numero = p;
printf("el numero del caracter es: %d", numero);
}
}
void something( const std::string& text){
cout << text;
}
Cita de: amchacon en 24 Julio 2013, 00:26 AM
Bueno a decir verdad, tampoco miraría SFML. Antes de nada aprendería a manejar el lenguaje, después ya aprenderás a manejar librerías
Cita de: zonahurbana en 24 Julio 2013, 06:46 AM
Cuando se invoca la función y se le pasa como argumento el nombre de un vector de caracteres, realmente se le está pasando la dirección de memoria del primer elemento y por ello sólo muestra el primero, ¿verdad?
Cita de: zonahurbana en 24 Julio 2013, 06:46 AM
Esto es un puntero a otro puntero a char.
Cuando se invoque la función y se le pase como argumento la dirección del primer elemento de un vector de caracteres, dicha dirección de memoria es almacenada en text (variable puntero a puntero). Si escribo *text es como mostrar el valor apuntado por text, que viene a ser un puntero a char. ¿Entonces no debería mostrar la dirección de memoria del vector?
void something(char *text){
cout << &(*(&(*(&(*text)))));
cout << text;
}