none
C ++ error std class RRS feed

  • Pregunta

  • Hello, 

    I have this code: 

    T maxi = std::numeric_limits<T>::max();

    And this errors:

    C2589: 'identifier' : illegal token on right side of '::'

    C2059: sintaxis error ::

    I don't understand this error. Can you help me??

    Hola tengo este código, 

    T maxi = std::numeric_limits<T>::max();

    Y estos errores:

    C2589: 'identificador' : símbolo (token) no válido en el lado derecho de '::'

    C2059: error de sintaxis '::'

    Que está pasando?



    domingo, 5 de agosto de 2012 18:17

Respuestas

  • Lo más probable es que tenga un macro definido como "max".  Esto pasa con el Windows SDK.  Haga esto:

    //En donde sea que esté incluyendo Windows.h:
    
    #define NOMINMAX
    #include <Windows.h>


    Jose R. MCP
    Code Samples

    • Marcado como respuesta webJoseModerator miércoles, 12 de septiembre de 2012 1:02
    lunes, 6 de agosto de 2012 2:57
    Moderador

Todas las respuestas

  • Sería interesante que pusieras un pequeño ejemplo de 6 líneas que nosotros pudrieramos compilar y ver el error.

    De esta manera es imposible. ¿Está definido T?¿está incluída la cabecera limits?¿...

    domingo, 5 de agosto de 2012 18:44
  • Primero que nada, gracias por contestar tan rápido. si está la cabecera incluida

    Es que es algo complejo, estoy haciendo una libreria de procesado de imágenes. La función donde da el error es algo así:

          

    template <typename T> int Negativo(LhImage<T> *in, LhImage<T> *out){
    ...
          T *bufferIn=in->getBuffer();
          T *bufferOut=out->getBuffer();

          T maxi = std::numeric_limits<T>::max(); // ERROR

          ...

    return OK;

    }

    Luego tengo la función en su respectivo definida como:

    template <typename T> int Negativo(LhImage<T> *in,LhImage<T> *out);

    Y además tengo la clase en otro archivo para crearme la librería:

    template DLL_EXPORT int Negativo(LhImage<unsigned char> *in,LhImage<unsigned char> *out);

    template DLL_EXPORT int Negativo(LhImage<int> *in,LhImage<int> *out);

    template DLL_EXPORT int Negativo(LhImage<float> *in,LhImage<float> *out);

    domingo, 5 de agosto de 2012 19:03
  • Lo más probable es que tenga un macro definido como "max".  Esto pasa con el Windows SDK.  Haga esto:

    //En donde sea que esté incluyendo Windows.h:
    
    #define NOMINMAX
    #include <Windows.h>


    Jose R. MCP
    Code Samples

    • Marcado como respuesta webJoseModerator miércoles, 12 de septiembre de 2012 1:02
    lunes, 6 de agosto de 2012 2:57
    Moderador
  • Parece que era eso y con la solución planteada por usted funciona.

    Le estoy muy agradecido.

    Saludos

    lunes, 6 de agosto de 2012 7:26
  • Hola ferlomi83, cuando dice "usted", ¿a quién se refiere?  No hace falta una respuesta.  Lo ideal sería más bien que usted marque la respuesta que le solucionó el problema usted mismo para dar por finiquitada esta pregunta.  Gracias.

    Jose R. MCP
    Code Samples

    lunes, 6 de agosto de 2012 14:28
    Moderador