2009-07-07 10 views
5

"pintura/qpathclipper.cpp", línea 1643.30: 1540-0274 (S) El nombre de búsqueda para "fuzzyCompare" no encontró una declaración.Las declaraciones estáticas no se consideran para una llamada a función si la función no está calificada

"pintura/qpathclipper.cpp", línea 1643.30: 1540-1292 (I) Las declaraciones estáticas no se consideran para una llamada a función si la función no está calificada.

Estoy intentando compilar Qt 4.5.0 en xlC 9.0.0.4a, y hacer llegar el mensaje compilador anteriormente para el siguiente código:

static bool fuzzyCompare(qreal a, qreal b) 
{ 
    return qFuzzyCompare(a, b); 
} 

template <typename InputIterator> 
InputIterator qFuzzyFind(InputIterator first, InputIterator last, qreal val) 
{ 
    while (first != last && !fuzzyCompare(qreal(*first), qreal(val))) //line 1643 
     ++first; 
    return first; 
} 
+1

Véase también [consulta de la función estática de un problema de función de plantilla con xlC] (http://stackoverflow.com/q/17661308/33732) –

Respuesta

6

La palabra clave "estática" es un error aquí , fuzzyCompare debe ser declarado justo

bool fuzzyCompare(qreal a, qreal b) 
+2

Para el registro, esto no es el case: funciones que son internas de una compilación * debe * ser estático, o de lo contrario el símbolo se exportará. En cambio, el error xlC se debe corregir calificando el uso de 'fuzzyCompare' con el nombre completo (incluido el espacio de nombres) en el punto de uso. –

+1

Ooh, probablemente tengas razón. Golpear el 'static' obtuvo la compilación para tener éxito, porque no iba a reemplazar todas las llamadas a' fuzzyCompare' (ahora 'qFuzzyCompare' en la serie 5.x) en un tarball de 200MB ... –

+0

@WalterNissen:' find . -type d -exec grep -l "[^:] fuzzyCompare (" {} \; | sed -i "s/\ ([^:] \) fuzzyCompare (/ \ 1fuzzy_namespace :: fuzzyCompare (/ g" '- no probado y fuera de mi cabeza, pero entiendes la idea; ;-) – DevSolar

Cuestiones relacionadas