Πόσο καλά τα πάει ο gcc με τα templates;

Chameleon cham_gss at hotmail.com
Tue May 2 13:40:11 EEST 2006


Έχω gcc 3.4.2

Ενώ με Visual Studio 2005 ο παρακάτω κώδικας γίνεται κανονικότατα 
compile και link, με το gcc πήρα το μπούλο.
(Μέχρι που το δοκίμασα μάλιστα, πίστευα οτι ο κώδικας είναι εντελώς 
cross-platform γιατί δεν χρησιμοποιεί καμμία βιβλιοθήκη πέρα απο τις 
standard)

------------------
template<class T>
static void Wastage1D::clever_erase(vector<T> &v, vector<typename 
vector<T>::iterator> &its, vector<T> &vo)
{ ........ }
------------------

Έτρεξα τον gcc ως εξής:
gcc -c wastage1d.cpp

Το μήνυμα που πετάει ο gcc για τον παραπάνω κώδικα είναι:
------------------
wastage1d.cpp:140: error: cannot declare member function `static void 
wastage::Wastage1D::clever_erase(std::vector<T, std::allocator<_CharT> 
 >&, std::vector<typename std::vector<T, std::allocator<_CharT> 
 >::iterator, std::allocator<typename std::vector<T, 
std::allocator<_CharT> >::iterator> >&, std::vector<T, 
std::allocator<_CharT> >&)' to have static linkage
wastage1d.cpp: In static member function `static void 
wastage::Wastage1D::clever_erase(std::vector<T, std::allocator<_CharT> 
 >&, std::vector<typename std::vector<T, std::allocator<_CharT> 
 >::iterator, std::allocator<typename std::vector<T, 
std::allocator<_CharT> >::iterator> >&, std::vector<T, 
std::allocator<_CharT> >&)':
------------------

Δίνω μια πολύ μικρή πιθανότητα να φταίει το Visual Studio επειδή μου 
επέτρεψε να γίνει compile κάτι που απαγορεύει η C++, αλλά ο κώδικας 
είναι πολύ εντάξει ρε γμτ.

Ουσιαστικά δημιουργώ μια κλάση με άπειρα static members (απο τη στιγμή 
που είναι template) και το instantiation μπορεί να γίνει οπουδήποτε μέσα 
στον κώδικα και οποτεδήποτε. Το οτι όμως είναι static member δεν θα 
έπρεπε να ενοχλεί την κλάση. Η μόνη σχέση που έχει με την κλάση, ενα 
public static member είναι οτι βρίσκεται κάτω από το όνομά της.

Μεταξύ μας, δεν έχω πάρει ιδέα ποιά είναι η διαφορά μεταξύ gcc, g++ και 
c++. Όλα το ίδιο δεν κάνουν;



More information about the Linux-greek-users mailing list