Autor
|
Tema: Problema con argumentos por defectos en funciones. (Leído 2,568 veces)
|
anonimo12121
|
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#include <iostream> using namespace std; #include "game.hpp" int main(int argc,char *argv[]){ Game g(); return 0; }
game.cpp#include "game.hpp" Game::Game(int w=640,int h=480,char *t="hola"){ myWindow = new sf::RenderWindow; myNameWindow = new char; //GameMap *m1 = new GameMap; myWindow->create(sf::VideoMode(640,480,32),t); while(1){ myWindow->display(); } }
game.hpp#include <iostream> #include <SFML/Graphics.hpp> #include <SFML/System.hpp> #include "gamemap.hpp" using namespace std; class Game { public: Game(int,int,char *); private: sf::RenderWindow *myWindow; char *myNameWindow; };
|
|
« Última modificación: 25 Julio 2012, 11:12 am por Xafi »
|
En línea
|
|
|
|
overxfl0w13
|
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í. //MAIN CPP #include <iostream> using namespace std; #include "game.hpp" int main(int argc,char *argv[]){ Game g(); return 0; } //GAME CPP #include "game.hpp" Game::Game(int w,int h, char *t){ myWindow = new sf::RenderWindow; myNameWindow = new char; //GameMap *m1 = new GameMap; myWindow->create(sf::VideoMode(640,480,32),t); while(1){ myWindow->display(); } } // GAME HPP #include <iostream> #include <SFML/Graphics.hpp> #include <SFML/System.hpp> #include "gamemap.hpp" using namespace std; class Game { public: Game(int w =640,int h=480,char *t="hola"); private: sf::RenderWindow *myWindow; char *myNameWindow; };
Un ejemplo con un code simple para aclarar es así: #include <iostream> using namespace std; void argumentos(int w=200,int o=300,int v=400); int main(int argc,char *argv[]) { int x=20,y=40; argumentos(); argumentos(x,y); argumentos(x); } void argumentos(int w,int o,int v) { cout <<"Los argumentos pasados tienen como valor: " << w << " " << o << " " << v << endl; }
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
|
OK, gracias, hice lo siguiente. main.cpp#include <iostream> using namespace std; #include "game.hpp" int main(int argc,char *argv[]){ Game g(640,480,"Team D source enginer"); return 0; }
game.cpp#include "game.hpp" Game::Game(int w,int h,char *t){ myWindow = new sf::RenderWindow; myNameWindow = new char; GameMap *m1 = new GameMap; myNameWindow=t; cout << t; myWindow->create(sf::VideoMode(w,h,32),t); while(1){ myWindow->display(); } }
game.hpp#include <iostream> #include <SFML/Graphics.hpp> #include <SFML/System.hpp> #include "gamemap.hpp" using namespace std; class Game { public: Game(int w,int h,char *t="Window test"); private: sf::RenderWindow *myWindow; char *myNameWindow; };
|
|
|
En línea
|
|
|
|
overxfl0w13
|
OK, gracias, hice lo siguiente. main.cpp#include <iostream> using namespace std; #include "game.hpp" int main(int argc,char *argv[]){ Game g(640,480,"Team D source enginer"); return 0; }
game.cpp#include "game.hpp" Game::Game(int w,int h,char *t){ myWindow = new sf::RenderWindow; myNameWindow = new char; GameMap *m1 = new GameMap; myNameWindow=t; cout << t; myWindow->create(sf::VideoMode(w,h,32),t); while(1){ myWindow->display(); } }
game.hpp#include <iostream> #include <SFML/Graphics.hpp> #include <SFML/System.hpp> #include "gamemap.hpp" using namespace std; class Game { public: Game(int w,int h,char *t="Window test"); private: sf::RenderWindow *myWindow; char *myNameWindow; };
Me alegro de que te haya funcionado! Team D Source powa jaja
|
|
|
En línea
|
[/url]
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Defectos en las firmas
Diseño Gráfico
|
Superplay
|
4
|
2,404
|
16 Febrero 2006, 23:24 pm
por Superplay
|
|
|
[ Batch] (Solucionado) Problema sobre argumentos %1
Scripting
|
Eleкtro
|
5
|
4,577
|
6 Noviembre 2011, 19:40 pm
por leogtz
|
|
|
ver argumentos de funciones codeblocks
Programación C/C++
|
_niu
|
2
|
2,945
|
15 Diciembre 2011, 21:57 pm
por _niu
|
|
|
[QT][C++]Problema con slots que tienen argumentos.
Programación C/C++
|
anonimo12121
|
2
|
2,377
|
13 Noviembre 2012, 22:29 pm
por anonimo12121
|
|
|
Windows 8 que cosa en vez que este por gusto sus defectos ?
Windows
|
Weeken
|
1
|
1,963
|
14 Diciembre 2012, 06:47 am
por Oblivi0n
|
|