Normas del foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Diciembre 05, 2008, 05:53:39
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++ (Moderador: Fashion)  |  Tema: -resuelto; no matching function, DeckOfCards 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: -resuelto; no matching function, DeckOfCards  (Leído 343 veces)
lann
Habitual
*****
Desconectado Desconectado

Mensajes: 322


maamamma

migue1990@gmail.com
Ver Perfil Email
« en: Agosto 06, 2007, 03:19:35 »

juegos gratis
aqui esta el codigo


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

el error esta en la linea 167, segun yo esta bien usada la funcion.

el prototipo es

void selectionSort( int [], const int, bool (*)( int, int ) );

y yo la uso asi

            selectionSort( temp_face, 13, ascending );

temp_face es un array de ints, ascending es el apuntador ala funcion ascending

pero me sale este error

DeckOfCards.cpp:170: error: no matching function for call to `DeckOfCards::selectionSort(int[13], const int&, <unknown type>)'
DeckOfCards.cpp:31: note: candidates are: void DeckOfCards::selectionSort(int*, int, bool (*)(int, int))

segun yo esta bien usada, pero no se por que creo que es un error muy obvio y estupido

espero que no sea tan estupido como para avergonzarme... =P
estos errores son los que digo... "deberia funcionar" y me atasco
« Última modificación: Marzo 30, 2008, 03:02:05 por lann » En línea

am
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 272


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #1 en: Agosto 09, 2007, 10:46:37 »

Fijate que el primer argumento es un puntero a int entonces debes de pasarle una variable int referenciada.

selectionSort( &temp_face, 13, ascending );

ya por otra parte comprueba el prototipo de la funcion "ascending" que le pasas.

Att: DarkIker


En línea


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> Colombia Underground Team

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> My Blog
codelogman
Visitante
« Respuesta #2 en: Agosto 09, 2007, 11:53:31 »

NONONONO Señor, por que te complicas usando prototipos que NO entendes!!!


por que no lo haces tu mismo?


es sencillo, mira:



void selectionSort(int a[], int size)
{
  int i, j, min;

  for (i = 0; i < size - 1; i++)
  {
    min = i;
    for (j = i+1; j < size; j++)
    {
       if (a[j] < a[min])
       {         
          min = j;
       }
    }
    swap(a, a[min]);
  }
}


sacado de wikipedia ....

 Angry  swap (variable1, variable2)  intercambia los valores de las vars...  que muy facilmente lo puedes hacer a mano tambien (nada te cuesta)


Saludos Frodo (Iker)
« Última modificación: Agosto 10, 2007, 04:35:50 por codelogman » En línea
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 272


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #3 en: Agosto 10, 2007, 10:37:54 »

Señoras y señores esto es lo que pasa cuando vivimos con MFC xDD, resultase mi querido gollum( Codelogman ) que hay algunos controles que requieren el "sort" de los mismos mediante una funcion que lo que hace es retornar un valor tal como lo hace strcmp, 0 si son iguales, -1 si el segundo arg es mayor que el primero y 1 en caso contrario; como la funcion la hacemos nosotros entonces podemos definir en base a que propiedades organizarlos, te acordas de NeoMsn y su organizacion de contactos?¿: aca pongo la funcion sort de este:

Código:
int CALLBACK CompareFunc( LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
{
struct Contac *Infor[ 2 ];

if ( (Infor[ 0 ] = ChildList( NULL, ( HTREEITEM )lParam1)) ) {
if ( (Infor[ 1 ] = ChildList( NULL, ( HTREEITEM )lParam2) ) ) {
int Ret1 = strncmp( Infor[ 0 ]->Estad, "NLN", 3);
int Ret2 = strncmp( Infor[ 1 ]->Estad, "NLN", 3);

if (!Ret1 && !Ret2)
return 0;
else if(!Ret1 && Ret2)
return -1;
else if(Ret1 && !Ret2)
return 1;
else {
Ret1 = strlen( Infor[ 0 ]->Estad);
Ret2 = strlen( Infor[ 1 ]->Estad);
if(Ret1 == Ret2)
return 0;
else if(Ret1 > Ret2)
return -1;
else if(Ret1 < Ret2)
return 1;
}
}
}
return 0;
}

Ahora si te quedo claro¿¿?, o lo intentamos con plastilina xDD, por cierto recuerda que estas perdiendo optimizacion en los for es mas rapido"++j" que "j++" Wink. Salu2.

Att: DarkIker
En línea


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> Colombia Underground Team

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> My Blog
codelogman
Visitante
« Respuesta #4 en: Agosto 10, 2007, 12:54:28 »

Señoras y señores esto es lo que pasa cuando vivimos con MFC xDD, resultase mi querido gollum( Codelogman ) que hay algunos controles que requieren el "sort"

 Grin  a ver enseñame en el code DONDE uso el sort que dices que requieren los controles de no se que que NO uso???


la funcion es 0 MFC!!

ademas en el code DONDE? uso MFC...


Mi estimado frodo, esta vez te haz confundido  Angry
« Última modificación: Agosto 10, 2007, 12:56:43 por codelogman » En línea
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 272


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #5 en: Agosto 10, 2007, 04:21:58 »

Yo nunca dije que estuvieramos usando MFC, solo que estabas aconstumbrado a el, por otra parte el sort es para "organizar" los items en base a 2 numeros que se le pasan, asi podriamos organizarlas de menor a mayor o viceversa, tu funcion esta fuera de lugar, no aporta nada al tema y por ende te cabreo xD. si tienes tele hay te vez.

Att: DarkIker
En línea


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> Colombia Underground Team

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> My Blog
lann
Habitual
*****
Desconectado Desconectado

Mensajes: 322


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #6 en: Agosto 10, 2007, 07:47:29 »

Fijate que el primer argumento es un puntero a int entonces debes de pasarle una variable int referenciada.

selectionSort( &temp_face, 13, ascending );

ya por otra parte comprueba el prototipo de la funcion "ascending" que le pasas.

Att: DarkIker





pero temp_face es un apuntador a int...

checate esta funcion donde implementan la funcion que yo uso selectionSort, e igual pasan el nombre del array...


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

pero igual pense que en alguna dimension semiparalela donde las personas se ponen los zapatos en las manos y los calcetines los usan como metodos anticonceptivos prove como decias, y no funciono.

el prototipo que le paso es

bool ascending( int, int );

selectionSort:

void selectionSort( int [], const int, bool (*)( int, int ) );

en el post de rafb hay viene todo


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion

creo que el problema es cuando paso ascending a selectionSort ya uqe sale

DeckOfCards.cpp:170: error: no matching function for call to `DeckOfCards::selectionSort(int[13], const int&, <UNKNOWN TYPE>)'
DeckOfCards.cpp:31: note: candidates are: void DeckOfCards::selectionSort(int*, int, bool (*)(int, int))

En línea

am
DarkIker
Habitual
*****
Desconectado Desconectado

Mensajes: 272


Colombia Underground Team

dark_iker_reign@hotmail.com
Ver Perfil WWW Email
« Respuesta #7 en: Agosto 10, 2007, 07:53:41 »

sorry me guie por el prototipo que arroja el compilador donde se muestra un apuntador a int que en si es igual que el array, pero el echo recae en esto "DeckOfCards::selectionSort(int[13], const int&, <UNKNOWN TYPE>)" esto de tipo desconocido la verdad no me cuadra por ningun lado, solo lo habia visto en objetos com y creeme que no creo que aplique para tu caso. Revisa la definicion de este en el fichero de caebcera que define la clase, hay debe de mostrarse tal cual el prototipo del metodo.

Att: DarkIker
En línea


Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> Colombia Underground Team

Necesitas ser usuario para ver los enlaces Crear Usuario  Hacer Sesion --> My Blog
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 194



Ver Perfil
« Respuesta #8 en: Agosto 10, 2007, 07:57:43 »

Buenas

Trata agregando lo siguiente (aunque realmente no creo que funcione jeje)

typedef enum{false, true} bool;

Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

lann
Habitual
*****
Desconectado Desconectado

Mensajes: 322


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #9 en: Agosto 11, 2007, 06:14:25 »

Buenas

Trata agregando lo siguiente (aunque realmente no creo que funcione jeje)

typedef enum{false, true} bool;

Salu2, FreakMind

o.0...

bool es una palabra reservada de c++ de hecho un tipo de datos...
la verdad no se cual sea el error, pero creo pues nimodo definire de una manera diferente selectionSort.



En línea

am
FreakMind
Habitual
*****
Desconectado Desconectado

Mensajes: 194



Ver Perfil
« Respuesta #10 en: Agosto 11, 2007, 11:07:40 »

Buenas

Se que es una palabra reservada, pero con tu codigo de prime me tiro un error tambien, entonces le agrege ese enum y me funciono. Fue solo una sugerencia


Salu2, FreakMind
En línea

Connoisseurs of C semantics find C++ inferior to ++C

lann
Habitual
*****
Desconectado Desconectado

Mensajes: 322


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #11 en: Agosto 12, 2007, 01:34:48 »

eso es por que bool es una palabra reservada de C++ y en C puedes usar incluso bool como variable

alomejor compilaste prime como si fuera C

y la solucion? = 0
« Última modificación: Noviembre 24, 2007, 09:31:28 por lann » En línea

am
lann
Habitual
*****
Desconectado Desconectado

Mensajes: 322


maamamma

migue1990@gmail.com
Ver Perfil Email
« Respuesta #12 en: Febrero 28, 2008, 10:08:50 »

hmmmm...

// DeckOfCards class definition
class DeckOfCards
{
public:
   DeckOfCards(); // constructor initializes deck
   void shuffle(); // shuffles cards in deck
   void deal(); // deals cards in deck
   void dealFiveCard();
   int checkHand();
   void infoHand();

  void selectionSort( int [], const int, bool (*)( int, int ) );
  void swap( int * const, int * const );
  static bool ascending( int, int ); // implements ascending order
  static bool descending( int, int ); // implements descending order

   enum Hand{ NOTHING = -1, PAIR = 2, TWO_PAIRS = 15,
   KIND_3 = 3, KIND_4 = 4, FLUSH = 5, STRAIGHT = 7 };

private:
   int deck[ 4 ][ 13 ]; // represents deck of cards
   int hand[ 5 ][ 5 ];
}; // end class DeckOfCards

se solucionaba haciendo
static ascending y descending....

posteo esto por que nunca se publico la solucion.

un tip.
el apuntador this


y solo por si no recuerdan donde se utilizaba la funcion selectionSort


int DeckOfCards::checkHand()
{
...
//STRAIGHT
            selectionSort( temp_face, 13, ascending );

            bool straight = false;
            for( int s = 0; s < 13 - 1; s++ )
            {
                if( temp_face[ s ] == ( temp_face[ s + 1 ] - 1 ) )
                straight = true;
                else
                straight = false;
            }
            if( straight )
            myHand = STRAIGHT;
            break;
...

« Última modificación: Febrero 28, 2008, 10:12:18 por lann » En línea

am
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Carbide C/C#/C++ (Moderador: Fashion)  |  Tema: -resuelto; no matching function, DeckOfCards « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.7 | SMF © 2006-2007, Simple Machines LLC