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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Creo que tengo un problema de constructores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Creo que tengo un problema de constructores  (Leído 4,713 veces)
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Creo que tengo un problema de constructores
« en: 4 Abril 2012, 16:42 pm »

Hola buenas estoy dividiendo el proyectos en varios cpp y hpp y  bueno me esta dando problema lo siguiente y no se por qué!.

pongo primero un trozo del code y luego el error.

Los constructores
Código
  1.        Menu(sf::RenderWindow *r,float x,float y,const sf::Unicode::Text &text,bool s);
  2.        Menu(sf::RenderWindow *r,float x,float y,float w,float h,bool s);
Código:
[b]Donde lo invoco por primera vez![/b]
[code=cpp]
Menu Pausa(&app,0,0,290,350);
Menu Inicio(&app,0,0,"img/logo.png");
...

ku\headers\gui.hpp|13|error: la conversión de 'int' a 'const sf::Unicode::Text' es ambigua|
ku\headers\gui.hpp|13|nota: los candidatos son:|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|83|nota: sf::Unicode::Text::Text(const Uint32*) <coincidencia cercana>|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|83|nota:   no hay una conversión conocida para el argumento 1 de 'int' a 'const Uint32* {aka const unsigned int*}'|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|82|nota: sf::Unicode::Text::Text(const Uint16*) <coincidencia cercana>|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|82|nota:   no hay una conversión conocida para el argumento 1 de 'int' a 'const Uint16* {aka const short unsigned int*}'|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|81|nota: sf::Unicode::Text::Text(const Uint8*) <coincidencia cercana>|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|81|nota:   no hay una conversión conocida para el argumento 1 de 'int' a 'const Uint8* {aka const unsigned char*}'|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|80|nota: sf::Unicode::Text::Text(const wchar_t*) <coincidencia cercana>|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|80|nota:   no hay una conversión conocida para el argumento 1 de 'int' a 'const wchar_t*'|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|79|nota: sf::Unicode::Text::Text(const char*) <coincidencia cercana>|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|79|nota:   no hay una conversión conocida para el argumento 1 de 'int' a 'const char*'|
ku\headers\interfaz.hpp|80|error:   se inicializa el argumento 4 de 'Menu::Menu(sf::RenderWindow*, float, float, const sf::Unicode::Text&, bool)'|
ku\headers\gui.hpp|14|error: no se encontró una función coincidente para la llamada a 'Menu::Menu(sf::RenderWindow*, int, int, const char [13])'|
ku\headers\gui.hpp|14|nota: los candidatos son:|
ku\headers\interfaz.hpp|81|nota: Menu::Menu(sf::RenderWindow*, float, float, float, float, bool)|
ku\headers\interfaz.hpp|81|nota:   el candidato espera 6 argumentos, se proporcionaron 4|
ku\headers\interfaz.hpp|80|nota: Menu::Menu(sf::RenderWindow*, float, float, const sf::Unicode::Text&, bool)|
ku\headers\interfaz.hpp|80|nota:   el candidato espera 5 argumentos, se proporcionaron 4|
ku\headers\interfaz.hpp|59|nota: Menu::Menu(const Menu&)|
ku\headers\interfaz.hpp|59|nota:   el candidato espera 1 argumento, se proporcionaron 4|
ku\headers\gui.hpp|20|error: la conversión de 'int' a 'const sf::Unicode::Text' es ambigua|
ku\headers\gui.hpp|20|nota: los candidatos son:|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|83|nota: sf::Unicode::Text::Text(const Uint32*) <coincidencia cercana>|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|83|nota:   no hay una conversión conocida para el argumento 1 de 'int' a 'const Uint32* {aka const unsigned int*}'|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|82|nota: sf::Unicode::Text::Text(const Uint16*) <coincidencia cercana>|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|82|nota:   no hay una conversión conocida para el argumento 1 de 'int' a 'const Uint16* {aka const short unsigned int*}'|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|81|nota: sf::Unicode::Text::Text(const Uint8*) <coincidencia cercana>|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|81|nota:   no hay una conversión conocida para el argumento 1 de 'int' a 'const Uint8* {aka const unsigned char*}'|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|80|nota: sf::Unicode::Text::Text(const wchar_t*) <coincidencia cercana>|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|80|nota:   no hay una conversión conocida para el argumento 1 de 'int' a 'const wchar_t*'|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|79|nota: sf::Unicode::Text::Text(const char*) <coincidencia cercana>|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.2\..\..\..\..\include\SFML\System\Unicode.hpp|79|nota:   no hay una conversión conocida para el argumento 1 de 'int' a 'const char*'|
ku\headers\interfaz.hpp|80|error:   se inicializa el argumento 4 de 'Menu::Menu(sf::RenderWindow*, float, float, const sf::Unicode::Text&, bool)'|
||=== Build finished: 34 errors, 0 warnings ===|[/code]

pongo el code de la clase completo aqui
Código
  1. class Menu {
  2.    private:
  3.        sf::RenderWindow *_App;
  4.        bool _On;
  5.        sf::Shape _Rect;
  6.        sf::Color _CD;
  7.        int _NumberElement;//
  8.        sf::Font _Font;
  9.        bool _ElementType[10];// true dynamic, false static
  10.        Subrayado _Sub;
  11.        int _ElementClick;
  12.        int _ElementAbove;
  13.        sf::Image _Ibg;
  14.        sf::Sprite _Sbg;
  15.        bool _MenuType;//true image. false shader
  16.        //Sonidos
  17.        Sonido _S[2];
  18.        bool _SoundOn;//true hay sonido, false no hay sonido
  19.        int _ElementLoop;
  20.    public:
  21.        sf::String _Element[10];
  22.        Menu(sf::RenderWindow *r,float x,float y,const sf::Unicode::Text &text,bool s);
  23.        Menu(sf::RenderWindow *r,float x,float y,float w,float h,bool s);
  24.        void Print();
  25.        void SetState(bool x);//true or false
  26.        bool GetState();//true or false
  27.        void AddElement(const sf::Unicode::Text &Text,float size,bool t);//bool tyoe static or dynamic
  28.        void SetPosition(int ele,float x,float y);
  29.        bool Comprobar(float x,float y,bool &click);
  30.        int GetClick();
  31.        void SetClick(int i);
  32.        void SetSound(const sf::Unicode::Text &text,int x);
  33. };


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
Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: Creo que tengo un problema de constructores
« Respuesta #1 en: 4 Abril 2012, 22:11 pm »

Antes que nada, estás enlazando bien estás librerías ?: sfml-graphics, sfml-window, sfml-system.

Al primer constructor:
Código
  1. Menu( sf::RenderWindow *r,float x,float y,const sf::Unicode::Text &text,bool s);

Lo llamás de esta forma:
Código
  1. Menu Inicio(&app,0,0,"img/logo.png");

Te falta un parámetro para bool s. ALgo así:
Código
  1. Menu Inicio(&app,0,0,"img/logo.png", true );

Pero tenés que poner más atención en la definición del método por si te olvidaste un parámetro. Tiene que ser así:
Código
  1. Menu::Menu( sf::RenderWindow *r,float x,float y,const sf::Unicode::Text &text,bool s){
  2.     // código
  3. }
  4.  



Al segundo constructor:
Código
  1. Menu( sf::RenderWindow *r,float x,float y,float w,float h,bool s);

Lo llamás de esta forma:
Código
  1. Menu Pausa(&app,0,0,290,350);
Lo mismo que el anterior. Te falta un valor bool. Y tenés que fijarte en la definición.

No veo otro error en los constructores. Lo que deberías hacer es escribir un constructor sin parámetros y agregárselos( a los parámetros ) uno por uno mientras compilás.


En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Creo que tengo un problema de constructores
« Respuesta #2 en: 4 Abril 2012, 22:23 pm »

El problema solo me ocurre al ponerlo en varios cpp, antes declaraba y definía en cabeceras.

Pero perdón la definición coge un valor default si no se le inserta no se si me estaré equivocando aquí pongo el código

Qué quieres decir con ?.
Citar
Lo que deberías hacer es escribir un constructor sin parámetros y agregárselos( a los parámetros ) uno por uno mientras compilás.

Código
  1. Menu::Menu(sf::RenderWindow *r,float x,float y,float w,float h,bool s=false){
  2.    _Sub.Init(r);
  3.    _Sub.Create(255,255,255,0,0,0,0);
  4.    _Sub.Set(false);
  5.    _Sub.Opacity(60);
  6.    _CD.r=0;
  7.    _CD.g=0;
  8.    _CD.b=0;
  9.    _CD.a=230;
  10.    _App=r;
  11.    _Rect.AddPoint(x,y,_CD,_CD);
  12.    _Rect.AddPoint(x+w,y,_CD,_CD);
  13.    _Rect.AddPoint(x+w,y+h,_CD,_CD);
  14.    _Rect.AddPoint(x,y+h,_CD,_CD);
  15.    _Font.LoadFromFile("ace_futurism.ttf");
  16.    _MenuType=false;
  17.    _ElementClick= -1;
  18.    _SoundOn=s;
  19.    _ElementLoop=-1;
  20.    _ElementAbove=-1;
  21. };
  22. Menu::Menu(sf::RenderWindow *r,float x,float y,const sf::Unicode::Text &text,bool s=false){
  23.    _Sub.Init(r);
  24.    _App=r;
  25.    _Sub.Create(255,255,255,0,0,0,0);
  26.    _Sub.Set(false);
  27.    _Sub.Opacity(60);
  28.    _Font.LoadFromFile("ace_futurism.ttf");
  29.    _Ibg.LoadFromFile("img/logo.png");
  30.    _Ibg.SetSmooth(false);
  31.    _Sbg.SetImage(_Ibg);
  32.    _Sbg.SetPosition(x,y);
  33.    _MenuType=true;
  34.    _ElementClick= -1;
  35.    _SoundOn=s;
  36.    _ElementLoop=-1;
  37.    _ElementAbove=-1;
  38. }
« Última modificación: 4 Abril 2012, 22:29 pm por Dr.Hacker++ » 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
Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: Creo que tengo un problema de constructores
« Respuesta #3 en: 4 Abril 2012, 22:50 pm »

Lo que decía era que hagas un constructor vacío, por ejemplo:
Código
  1. Menu::Menu( sf::RenderWindow *r ){
  2.     // no hacer nada
  3. }
Y lo llamás:
Código
  1. Menu Pausa( &app );

Lo compilás y si sale bien, le agregás de a uno los demás parámetros.


Tu código lo puse en un mismo archivo y me compiló bien. Lo puse así:
Código
  1. #include<iostream>
  2. #include<SFML/Graphics.hpp>
  3. #include<iostream>
  4.  
  5. class Subrayado{
  6. public:
  7. bool Init( sf::RenderWindow *r ){ return true; };
  8. bool Create( int a,int b,int c,int d,int e,int f,int g){ return true; }
  9. bool Set( bool a ){ return true; }
  10. bool Opacity( int a ){ return true; }
  11. };
  12.  
  13. class Sonido{
  14.  
  15. };
  16.  
  17. class Menu {
  18.    private:
  19.        sf::RenderWindow *_App;
  20.        bool _On;
  21.        sf::Shape _Rect;
  22.        sf::Color _CD;
  23.        int _NumberElement;//
  24.        sf::Font _Font;
  25.        bool _ElementType[10];// true dynamic, false static
  26.        Subrayado _Sub;
  27.        int _ElementClick;
  28.        int _ElementAbove;
  29.        sf::Image _Ibg;
  30.        sf::Sprite _Sbg;
  31.        bool _MenuType;//true image. false shader
  32.        //Sonidos
  33.        Sonido _S[2];
  34.        bool _SoundOn;//true hay sonido, false no hay sonido
  35.        int _ElementLoop;
  36.    public:
  37.        sf::String _Element[10];
  38.        Menu(sf::RenderWindow *r,float x,float y,const sf::Unicode::Text &text,bool s);
  39.        Menu(sf::RenderWindow *r,float x,float y,float w,float h,bool s);
  40.        void Print();
  41.        void SetState(bool x);//true or false
  42.        bool GetState();//true or false
  43.        void AddElement(const sf::Unicode::Text &Text,float size,bool t);//bool tyoe static or dynamic
  44.        void SetPosition(int ele,float x,float y);
  45.        bool Comprobar(float x,float y,bool &click);
  46.        int GetClick();
  47.        void SetClick(int i);
  48.        void SetSound(const sf::Unicode::Text &text,int x);
  49. };
  50.  
  51. Menu::Menu(sf::RenderWindow *r,float x,float y,float w,float h,bool s=false){
  52.    _Sub.Init( r );
  53.    _Sub.Create(255,255,255,0,0,0,0);
  54.    _Sub.Set(false);
  55.    _Sub.Opacity(60);
  56.    _CD.r=0;
  57.    _CD.g=0;
  58.    _CD.b=0;
  59.    _CD.a=230;
  60.    _App=r;
  61.    _Rect.AddPoint(x,y,_CD,_CD);
  62.    _Rect.AddPoint(x+w,y,_CD,_CD);
  63.    _Rect.AddPoint(x+w,y+h,_CD,_CD);
  64.    _Rect.AddPoint(x,y+h,_CD,_CD);
  65.    _Font.LoadFromFile("ace_futurism.ttf");
  66.    _MenuType=false;
  67.    _ElementClick= -1;
  68.    _SoundOn=s;
  69.    _ElementLoop=-1;
  70.    _ElementAbove=-1;
  71. };
  72. Menu::Menu(sf::RenderWindow *r,float x,float y,const sf::Unicode::Text &text,bool s=false){
  73.    _Sub.Init( r );
  74.    _App=r;
  75.    _Sub.Create(255,255,255,0,0,0,0);
  76.    _Sub.Set(false);
  77.    _Sub.Opacity(60);
  78.    _Font.LoadFromFile("ace_futurism.ttf");
  79.    _Ibg.LoadFromFile("img/logo.png");
  80.    _Ibg.SetSmooth(false);
  81.    _Sbg.SetImage(_Ibg);
  82.    _Sbg.SetPosition(x,y);
  83.    _MenuType=true;
  84.    _ElementClick= -1;
  85.    _SoundOn=s;
  86.    _ElementLoop=-1;
  87.    _ElementAbove=-1;
  88. }
  89.  
  90. int main(){
  91. sf::RenderWindow app( sf::VideoMode( 100, 100,32 ), "ejemplo" );
  92.  
  93. Menu Pausa(&app,0,0,290,350);
  94. Menu Inicio(&app,0,0,"img/logo.png");
  95.  
  96. while( app.IsOpened() ){
  97. sf::Event evento;
  98. while( app.GetEvent( evento ) ){
  99. if( evento.Type == sf::Event::Closed )app.Close();
  100. }
  101. app.Display();
  102. }
  103. return 0;
  104. }

Le agregué las clases Sonido y Subrayado para no borrar la declaración de las variables y que quede igual a tu código.
Si estás separando el código en hpp y cpp tal vez tenés un problema en las cabeceras. Te puede faltar un include en los cpps por ejemplo.
« Última modificación: 4 Abril 2012, 22:51 pm por CrisQC » En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Creo que tengo un problema de constructores
« Respuesta #4 en: 4 Abril 2012, 23:18 pm »

Gracias cris por ayudarme.
Estado modificando el code, y me da problema al tener el parametro bool con valor por defecto ;( voy a probar a hacer un proyecto con una clase de suma y que tenga valores por defecto.
EDITO : El problema es que no puedo poner funciones que tengan la capacidad de tener el parametro por defecto mira lo que hice
main.cpp
Código
  1. #include <iostream>
  2. using namespace std;
  3. #include "mat.hpp"
  4. mat m;
  5. int main(int argc, char *argv[]){
  6.    cout << m.suma();
  7.  
  8.    cin.get();
  9.    return 0;
  10. }
mat.cpp
Código
  1. #include "mat.hpp"
  2. int mat::suma(int x=3 , int x2=7){
  3.    return x+x2;
  4. }
  5.  

mat.hpp
Código
  1. class mat {
  2.    private:
  3.    public:
  4.        int suma(int x, int x2);
  5. };
  6.  

Error
Código:
C:\Users\Tony\Desktop\prueba\main.cpp|6|error: no se encontró una función coincidente para la llamada a 'mat::suma()'|
C:\Users\Tony\Desktop\prueba\main.cpp|6|nota: el candidato es:|
C:\Users\Tony\Desktop\prueba\suma.hpp|4|nota: int mat::suma(int, int)|
C:\Users\Tony\Desktop\prueba\suma.hpp|4|nota:   el candidato espera 2 argumentos, se proporcionaron 0|
||=== Build finished: 4 errors, 0 warnings ===|
« Última modificación: 4 Abril 2012, 23:30 pm por Dr.Hacker++ » 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
Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: Creo que tengo un problema de constructores
« Respuesta #5 en: 5 Abril 2012, 03:46 am »

Intentá hacer esto. Hace el siguiente cambio:
Código
  1. #include "mat.hpp"
  2. // int mat::suma(int x=3 , int x2=7){ // aca no pongas el valor por defecto
  3. int mat::suma(int x=3 , int x2 ){ // que te quede así.
  4.    return x+x2;
  5. }

Código
  1. class mat {
  2.    private:
  3.    public:
  4.        int suma(int x, int x2 = 7); // aca SI poné el valor por defecto.
  5. };

Estoy casi seguro de que así te va a servir. Intentalo. Y Por nada !!.
En línea

anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Creo que tengo un problema de constructores
« Respuesta #6 en: 5 Abril 2012, 12:02 pm »

Ok por fin xD que raro yo creo que antes cuando aprendí a usarlo lo usaba así X)


al final hice gracias a ti esto:
Código
  1. #include "suma.hpp"
  2. int mat::suma(int x, int x2){
  3.    return x+x2;
  4. }
  5.  
Código
  1. class mat {
  2.    private:
  3.    public:
  4.        int suma(int x=2, int x2=2);
  5. };
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
Beakman

Desconectado Desconectado

Mensajes: 190



Ver Perfil WWW
Re: Creo que tengo un problema de constructores
« Respuesta #7 en: 6 Abril 2012, 00:46 am »

Sí, si yo lo hago al revés me compila bien, es por el compilador que uses y la versión. Igual la forma correcta es cómo terminaste haciéndolo. Me alegro que lo hayas solucionado. Saludos !!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con herencia de constructores
Programación C/C++
Lord_Lobotomi 3 2,952 Último mensaje 1 Marzo 2012, 05:22 am
por naderST
Creo que tengo problemas en la bios
Hardware
alejodel 6 4,292 Último mensaje 23 Agosto 2012, 18:54 pm
por alejodel
creo que tengo un intruso en mi pc « 1 2 »
Seguridad
sotobr 12 8,009 Último mensaje 23 Noviembre 2013, 01:55 am
por sotobr
Problema con constructores y archivos c#
.NET (C#, VB.NET, ASP)
Kaxperday 3 2,636 Último mensaje 4 Mayo 2015, 12:50 pm
por kub0x
Creo que me voy a pintar al gimnasio que por 9€ tengo todo incluido en el polideportivo!
Foro Libre
Terminator5 5 2,842 Último mensaje 3 Noviembre 2023, 16:46 pm
por 4v1dy4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines