2009-07-07 8 views
5

"painting/qpathclipper.cpp", ligne 1643.30: 1540-0274 (S) La recherche de nom pour "fuzzyCompare" n'a pas trouvé de déclaration. "Painting/qpathclipper.cpp", ligne 1643.30: 1540-1292 (I) Les déclarations statiques ne sont pas prises en compte pour un appel de fonction si la fonction n'est pas qualifiée.Les déclarations statiques ne sont pas prises en compte pour une fonction si la fonction n'est pas qualifiée

Je suis en train de compiler Qt 4.5.0 sur xlC 9.0.0.4a, et faire passer le message du compilateur ci-dessus pour le code suivant:

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

Voir aussi (http://stackoverflow.com/q/17661308/33732) [fonction statique recherche d'un problème de fonction de modèle avec xlC] –

Répondre

6

Le mot-clé "statique" est dans l'erreur ici , fuzzyCompare doit être déclarée juste

bool fuzzyCompare(qreal a, qreal b) 
+2

Pour mémoire, ce n'est pas case: fonctions internes à une compilation il * devrait * être statique, sinon le symbole sera exporté. Au lieu de cela, l'erreur xlC devrait être corrigée en qualifiant l'utilisation du 'fuzzyCompare' avec le nom complet (y compris l'espace de noms) au point d'utilisation. –

+1

Ooh, vous avez probablement raison. Frapper le 'static' a eu la compilation pour réussir, parce que je n'étais pas sur le point de remplacer tous les appels à' fuzzyCompare' (maintenant 'qFuzzyCompare' dans la série 5.x) dans un tarball 200MB ... –

+0

@WalterNissen:' trouver . -type d -exec grep -l "[^:] fuzzyCompare (" {} \; | sed -i "s/\ ([^:] \) fuzzyCompare (/ \ 1fuzzy_namespace :: fuzzyCompare (/ g" '- non testé et hors de ma tête, mais vous avez l'idée. ;-) – DevSolar

Questions connexes