Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: KISKE en 19 Enero 2013, 00:51 AM

Título: Error: * was not declared in this scope
Publicado por: KISKE en 19 Enero 2013, 00:51 AM
Hola,
He mirado muchos temas relacionados a este error pero no puedo arreglarlo.

conds.cpp:
Código (cpp) [Seleccionar]
bool is_legal_position(string position)
{
    if (position == "GK")
        return true;

    if (position.size() != 3)
        return false;

    string raw_position = position.substr(0, 2);
    char side = position[2];

    return tact_manager().position_exists(raw_position) && is_legal_side(side); // En esta línea marca el error!
}


tacts.cpp:
Código (cpp) [Seleccionar]
tactics_manager& tact_manager(void)
{
    static tactics_manager tmng;
    return tmng;
}


error: 'tact_manager' was not declared in this scope


Si falta código avisenme y lo publico.

Gracias de antemano!
Título: Re: Error: * was not declared in this scope
Publicado por: Puntoinfinito en 19 Enero 2013, 11:55 AM
Mira bien si declarastes la función...

Consejo; Ah otra cosa, cuando creas una función con objetivo de modificar un objeto como ahora uno de tipo void, necesitas indicar que nombre recibe dicho objeto. Tal que así;

Citarint funcion(void variable) {
variable = 1;
return variable;
}
Título: Re: Error: * was not declared in this scope
Publicado por: Stakewinner00 en 19 Enero 2013, 12:11 PM
Si pones el código entero lo compilo y miro que falla.
Título: Re: Error: * was not declared in this scope
Publicado por: 0xDani en 19 Enero 2013, 13:17 PM
Cita de: Puntoinfinito en 19 Enero 2013, 11:55 AM
Mira bien si declarastes la función...

Consejo; Ah otra cosa, cuando creas una función con objetivo de modificar un objeto como ahora uno de tipo void, necesitas indicar que nombre recibe dicho objeto. Tal que así;


No se que has querido decir, pero no conozco ningun estandar que permita la creacion de objetos de tipo void. Quiza te referias a void*?
Título: Re: Error: * was not declared in this scope
Publicado por: dooque en 19 Enero 2013, 16:16 PM
Hola!

Cita de: PuntoinfinitoConsejo; Ah otra cosa, cuando creas una función con objetivo de modificar un objeto como ahora uno de tipo void, necesitas indicar que nombre recibe dicho objeto. Tal que así;

No se puede, justamente void significa "NADA", i.e. "No argumentos" es ese caso.

Por otro lado y llendo a la pregunta original, falta código y tendrías que decir en que archivo da el error, pero lo más probable es que en conds.cpp te falte declarar el prototipo de la función o incluir la cabezera de la misma:


tactics_manager& tact_manager(void);


Saludos.
Título: Re: Error: * was not declared in this scope
Publicado por: KISKE en 19 Enero 2013, 18:21 PM
Cita de: dooque en 19 Enero 2013, 16:16 PM
Hola!

No se puede, justamente void significa "NADA", i.e. "No argumentos" es ese caso.

Por otro lado y llendo a la pregunta original, falta código y tendrías que decir en que archivo da el error, pero lo más probable es que en conds.cpp te falte declarar el prototipo de la función o incluir la cabezera de la misma:


tactics_manager& tact_manager(void);


Saludos.
Exceleeeente, me funcionó a la perfección por el momento, muchísimas gracias!


Gracias a todos por las rápidas respuestas!