2009-07-07 17 views
5

"painting/qpathclipper.cpp", dòng 1643.30: 1540-0274 (S) Tra cứu tên cho "fuzzyCompare" không tìm thấy một khai báo.Khai báo tĩnh không được xem xét cho một cuộc gọi hàm nếu hàm không đủ điều kiện

"painting/qpathclipper.cpp", dòng 1643.30: 1540-1292 (I) Khai báo tĩnh không được xem xét cho một cuộc gọi hàm nếu hàm không đủ điều kiện.

Tôi đang cố gắng để biên dịch Qt 4.5.0 trên XLC 9.0.0.4a, và nhận được thông báo trình biên dịch trên cho đoạn mã sau:

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

Xem thêm [chức năng tra cứu tĩnh từ một vấn đề mẫu chức năng với XLC] (http://stackoverflow.com/q/17661308/33732) –

Trả lời

6

Từ khóa "tĩnh" là do lỗi ở đây , fuzzyCompare cần được khai báo chỉ

bool fuzzyCompare(qreal a, qreal b) 
+2

Đối với hồ sơ, đây không phải là case: các hàm bên trong một trình biên dịch un nó * nên * tĩnh, nếu không biểu tượng sẽ được xuất. Thay vào đó, lỗi xlC phải được sửa bằng cách đủ điều kiện sử dụng 'fuzzyCompare' với tên đầy đủ (bao gồm cả không gian tên) tại thời điểm sử dụng. –

+1

Ooh, có lẽ bạn đã đúng. Nổi bật 'tĩnh' đã biên dịch thành công, bởi vì tôi không định thay thế tất cả các lệnh gọi thành' fuzzyCompare' (bây giờ là 'qFuzzyCompare' trong chuỗi 5.x) trong một tarball 200MB ... –

+0

@WalterNissen:' find . -type d -exec grep -l "[^:] fuzzyCompare (" {} \; | sed -i "s/\ ([^:] \) fuzzyCompare (/ \ 1fuzzy_namespace :: fuzzyCompare (/ g" '- chưa được kiểm tra và ra khỏi đỉnh đầu của tôi, nhưng bạn có được ý tưởng .--) – DevSolar

Các vấn đề liên quan