Título: Creo que tengo un problema de constructores Publicado por: anonimo12121 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
Código: [b]Donde lo invoco por primera vez![/b] 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
Título: Re: Creo que tengo un problema de constructores Publicado por: Beakman 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
Lo llamás de esta forma: Código
Te falta un parámetro para bool s. ALgo así: Código
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
Al segundo constructor: Código
Lo llamás de esta forma: Código 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. Título: Re: Creo que tengo un problema de constructores Publicado por: anonimo12121 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
Título: Re: Creo que tengo un problema de constructores Publicado por: Beakman en 4 Abril 2012, 22:50 pm Lo que decía era que hagas un constructor vacío, por ejemplo:
Código Y lo llamás: Código
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
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. Título: Re: Creo que tengo un problema de constructores Publicado por: anonimo12121 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 mat.cpp Código
mat.hpp Código
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()'| Título: Re: Creo que tengo un problema de constructores Publicado por: Beakman en 5 Abril 2012, 03:46 am Intentá hacer esto. Hace el siguiente cambio:
Código
Código
Estoy casi seguro de que así te va a servir. Intentalo. Y Por nada !!. Título: Re: Creo que tengo un problema de constructores Publicado por: anonimo12121 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
Código
Título: Re: Creo que tengo un problema de constructores Publicado por: Beakman 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 !!
|