Foro de elhacker.net

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
  1. bool is_legal_position(string position)
  2. {
  3.    if (position == "GK")
  4.        return true;
  5.  
  6.    if (position.size() != 3)
  7.        return false;
  8.  
  9.    string raw_position = position.substr(0, 2);
  10.    char side = position[2];
  11.  
  12.    return tact_manager().position_exists(raw_position) && is_legal_side(side); // En esta línea marca el error!
  13. }

tacts.cpp:
Código
  1. tactics_manager& tact_manager(void)
  2. {
  3.    static tactics_manager tmng;
  4.    return tmng;
  5. }

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í;

Citar
int 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
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: Puntoinfinito
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 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:

Código:
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
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:

Código:
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!