elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con argumentos por defectos en funciones.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con argumentos por defectos en funciones.  (Leído 2,226 veces)
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Problema con argumentos por defectos en funciones.
« en: 25 Julio 2012, 11:10 am »

buenas a todos tengo un lío tremendo con los argumentos por defectos de las funciones, no se sí lo estoy haciendo bien o no...
No debería de coger los valores por defecto al invocarlo como lo estoy haciendo en el main? no invoca al constructor que he declarado.

main.cpp
Código
  1. #include <iostream>
  2. using namespace std;
  3. #include "game.hpp"
  4. int main(int argc,char *argv[]){
  5.    Game g();
  6.    return 0;
  7.  
  8. }
game.cpp
Código
  1. #include "game.hpp"
  2. Game::Game(int w=640,int h=480,char *t="hola"){
  3.    myWindow = new sf::RenderWindow;
  4.    myNameWindow = new char;
  5.    //GameMap *m1 = new GameMap;
  6.    myWindow->create(sf::VideoMode(640,480,32),t);
  7.  
  8.    while(1){
  9.        myWindow->display();
  10.    }
  11. }
game.hpp
Código
  1. #include <iostream>
  2. #include <SFML/Graphics.hpp>
  3. #include <SFML/System.hpp>
  4. #include "gamemap.hpp"
  5. using namespace std;
  6. class Game {
  7.    public:
  8.        Game(int,int,char *);
  9.    private:
  10.        sf::RenderWindow *myWindow;
  11.        char *myNameWindow;
  12.  
  13. };


« Última modificación: 25 Julio 2012, 11:12 am por Xafi » En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
overxfl0w13

Desconectado Desconectado

Mensajes: 163



Ver Perfil WWW
Re: Problema con argumentos por defectos en funciones.
« Respuesta #1 en: 25 Julio 2012, 11:55 am »

Xafi, el valor de los parámetros por defecto que se le pasan a una función, se tienen que declarar en el prototipo de la misma, en tu caso no lo sé seguro porque en la declaración de la clase no se pueden establecer valores pero puedes probar así.
Código
  1. //MAIN CPP
  2. #include <iostream>
  3. using namespace std;
  4. #include "game.hpp"
  5. int main(int argc,char *argv[]){
  6.    Game g();
  7.    return 0;
  8.  
  9. }
  10.  
  11. //GAME CPP
  12.  
  13. #include "game.hpp"
  14. Game::Game(int w,int h, char *t){
  15.    myWindow = new sf::RenderWindow;
  16.    myNameWindow = new char;
  17.    //GameMap *m1 = new GameMap;
  18.    myWindow->create(sf::VideoMode(640,480,32),t);
  19.  
  20.    while(1){
  21.        myWindow->display();
  22.    }
  23. }
  24.  
  25. // GAME HPP
  26.  
  27. #include <iostream>
  28. #include <SFML/Graphics.hpp>
  29. #include <SFML/System.hpp>
  30. #include "gamemap.hpp"
  31. using namespace std;
  32. class Game {
  33.    public:
  34.        Game(int w =640,int h=480,char *t="hola");
  35.    private:
  36.        sf::RenderWindow *myWindow;
  37.        char *myNameWindow;
  38.  
  39. };

Un ejemplo con un code simple para aclarar es así:

Código
  1. #include <iostream>
  2. using namespace std;
  3. void argumentos(int w=200,int o=300,int v=400);
  4.  
  5. int main(int argc,char *argv[])
  6. {
  7.    int x=20,y=40;
  8.    argumentos();
  9.    argumentos(x,y);
  10.    argumentos(x);
  11. }
  12.  
  13. void argumentos(int w,int o,int v)
  14. {
  15.    cout <<"Los argumentos pasados tienen como valor: " << w << " " << o << " " << v << endl;
  16. }
  17.  

Puedes pasarle los valores que quieras a la función teniendo en cuenta que siempre tienen prioridad los valores que le pases como parámetros sobre los definidos por defecto. Y acuérdate también de que no puedes establecer valores por defecto si el que está a la derecha no tiene ninguno asignado, es decir si pasas 3 parámetros solo podrá estar definido el segundo valor por defecto si el 3 también es por defecto, y el primero, cuando el segundo y el tercero son por defecto.


« Última modificación: 25 Julio 2012, 11:59 am por overxfl0w13 » En línea

[/url]
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Problema con argumentos por defectos en funciones.
« Respuesta #2 en: 25 Julio 2012, 12:58 pm »

OK, gracias, hice lo siguiente.
main.cpp
Código
  1. #include <iostream>
  2. using namespace std;
  3. #include "game.hpp"
  4. int main(int argc,char *argv[]){
  5.    Game g(640,480,"Team D source enginer");
  6.    return 0;
  7.  
  8. }
  9.  
game.cpp
Código
  1. #include "game.hpp"
  2. Game::Game(int w,int h,char *t){
  3.    myWindow = new sf::RenderWindow;
  4.    myNameWindow = new char;
  5.    GameMap *m1 = new GameMap;
  6.    myNameWindow=t;
  7.    cout << t;
  8.    myWindow->create(sf::VideoMode(w,h,32),t);
  9.  
  10.    while(1){
  11.        myWindow->display();
  12.    }
  13. }
game.hpp
Código
  1. #include <iostream>
  2. #include <SFML/Graphics.hpp>
  3. #include <SFML/System.hpp>
  4. #include "gamemap.hpp"
  5. using namespace std;
  6. class Game {
  7.    public:
  8.        Game(int w,int h,char *t="Window test");
  9.    private:
  10.        sf::RenderWindow *myWindow;
  11.        char *myNameWindow;
  12.  
  13. };
  14.  
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
overxfl0w13

Desconectado Desconectado

Mensajes: 163



Ver Perfil WWW
Re: Problema con argumentos por defectos en funciones.
« Respuesta #3 en: 25 Julio 2012, 14:18 pm »

OK, gracias, hice lo siguiente.
main.cpp
Código
  1. #include <iostream>
  2. using namespace std;
  3. #include "game.hpp"
  4. int main(int argc,char *argv[]){
  5.    Game g(640,480,"Team D source enginer");
  6.    return 0;
  7.  
  8. }
  9.  
game.cpp
Código
  1. #include "game.hpp"
  2. Game::Game(int w,int h,char *t){
  3.    myWindow = new sf::RenderWindow;
  4.    myNameWindow = new char;
  5.    GameMap *m1 = new GameMap;
  6.    myNameWindow=t;
  7.    cout << t;
  8.    myWindow->create(sf::VideoMode(w,h,32),t);
  9.  
  10.    while(1){
  11.        myWindow->display();
  12.    }
  13. }
game.hpp
Código
  1. #include <iostream>
  2. #include <SFML/Graphics.hpp>
  3. #include <SFML/System.hpp>
  4. #include "gamemap.hpp"
  5. using namespace std;
  6. class Game {
  7.    public:
  8.        Game(int w,int h,char *t="Window test");
  9.    private:
  10.        sf::RenderWindow *myWindow;
  11.        char *myNameWindow;
  12.  
  13. };
  14.  

Me alegro de que te haya funcionado! Team D Source powa  ;) jaja
En línea

[/url]
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Defectos en las firmas
Diseño Gráfico
Superplay 4 2,076 Último mensaje 16 Febrero 2006, 23:24 pm
por Superplay
[ Batch] (Solucionado) Problema sobre argumentos %1
Scripting
Eleкtro 5 4,185 Último mensaje 6 Noviembre 2011, 19:40 pm
por leogtz
ver argumentos de funciones codeblocks
Programación C/C++
_niu 2 2,699 Último mensaje 15 Diciembre 2011, 21:57 pm
por _niu
[QT][C++]Problema con slots que tienen argumentos.
Programación C/C++
anonimo12121 2 2,076 Último mensaje 13 Noviembre 2012, 22:29 pm
por anonimo12121
Windows 8 que cosa en vez que este por gusto sus defectos ?
Windows
Weeken 1 1,682 Último mensaje 14 Diciembre 2012, 06:47 am
por Oblivi0n
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines