2009-07-07 26 views
5

"painting/qpathclipper.cpp", wiersz 1643.30: 1540-0274 (S) Wyszukiwanie nazwy dla "fuzzyCompare" nie znalazło deklaracji.Statyczne deklaracje nie są brane pod uwagę dla wywołania funkcji, jeśli funkcja nie jest kwalifikowana

"painting/qpathclipper.cpp", wiersz 1643.30: 1540-1292 (I) Statyczne deklaracje nie są brane pod uwagę dla wywołania funkcji, jeśli funkcja nie jest kwalifikowana.

Próbuję skompilować Qt 4.5.0 na XLC 9.0.0.4a, a uzyskanie powyższy komunikat kompilatora dla następującego kodu:

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

Zobacz również [statyczny funkcja wyszukiwania z funkcją emisji szablon z XLC] (http://stackoverflow.com/q/17661308/33732) –

Odpowiedz

6

W „statyczna” słowo kluczowe jest w błędzie tutaj , fuzzyCompare powinny zostać uznane tylko

bool fuzzyCompare(qreal a, qreal b) 
+2

Dla przypomnienia, to nie jest case: funkcje, które są wewnętrzne dla kompilacji un * powinien * być statyczny, inaczej symbol zostanie wyeksportowany. Zamiast tego, błąd xlC powinien zostać naprawiony poprzez zakwalifikowanie użycia 'fuzzyCompare' z pełną nazwą (w tym przestrzenią nazw) w miejscu użycia. –

+1

Ooh, prawdopodobnie masz rację. Uderzenie "statycznego" spowodowało, że kompilacja zakończyła się powodzeniem, ponieważ nie miałem zamiaru zastąpić wszystkich wywołań do 'fuzzyCompare' (teraz' qFuzzyCompare' w serii 5.x) w archiwum o wielkości 200 MB ... –

+0

@WalterNissen: 'find . -type d -exec grep -l "[^:] fuzzyCompare (" {} \; | sed -i "s/\ ([^:] \) fuzzyCompare (/ \ 1fuzzy_namespace :: fuzzyCompare (/ g" '- niesprawdzony i poza szczytem mojej głowy, ale wpadłeś na pomysł ;-) – DevSolar

Powiązane problemy