Evgenios1 Δημοσ. 26 Δεκεμβρίου 2010 Δημοσ. 26 Δεκεμβρίου 2010 Χρονια πολλα. Εχω ενα dll το οποιο εχει την υλοποιηση καποιων interfaces. Ολα καλα εκτος απο ενα θεματακι, τα interfaces εχουν no-strong types (vectors,strings,smartpointers etc..) με αποτελεσμα, αν κανω compile ενα κομματι απο το project μπορει να φαω πακετο για ευνοητους λογους . Σκευτηκα να φτιαξω μεσα στο project wrappers αυτων των τυπων και στη συνεχεια να τους βγαλω ως interface. Πχ mywrapperString -> IString και να τα χρησιμοποιησω σε ολο το project. IString αντι του std::wstring. Μηπως υπαρχει κατι πιο απολο, γιατι με το δικο μου σκεπτικο θα εχω 123123123123123 pointer Να και ενα cd
dop Δημοσ. 28 Δεκεμβρίου 2010 Δημοσ. 28 Δεκεμβρίου 2010 Το std::vector<int> για παράδειγμα είναι ένας συγκεκριμένος τύπος - γιατί δε μπορείς να τον χρησιμοποιήσεις;
m1cRo Δημοσ. 28 Δεκεμβρίου 2010 Δημοσ. 28 Δεκεμβρίου 2010 Λογικά πρέπει να trws πολλά warning, μπορείς να τα αγνοήσεις αν θέλεις, η καλύτερα μην φτιάχνεις dlls αλλα static libs γιατί με dlls έχεις αλλα προβλήματα όπως για παράδειγμα δη πρέπει να πετάς exceptions από dll "προσταμεσα". Αλλιώς για το κάθε τι πρέπει να φτιάξεις γκάι κάθε τι που έχει template ένα interface που δη είναι και τόσο ωραίο. Δες τα παραδείγματα από libs της apache. Τι φτιάχνεις αν επιτρέπεται?
Evgenios1 Δημοσ. 29 Δεκεμβρίου 2010 Μέλος Δημοσ. 29 Δεκεμβρίου 2010 Το std::vector<int> ειναι ενας τυπος, το θεμα ειναι οτι ολη η stl ειναι inline, αρα αν αλλαξω compiler, και θελω να κανω καποιο upgrade τοτε δεν θα κουμπωνει το std::vector. Τεσπα αλλαξα τα std::wstring με nul terminal string και το vector σε ενα interface (αντιγραφη απο την .net ) >template < class T > class IEnumerator { public: virtual bool Next() = 0; virtual void Reset() = 0; virtual T Current() = 0; }; εφτιαξα και μια for_each και ειμαι gg >template < class T , class F > __inline void for_each(IEnumerator<T>* enumerator,F _ld) { while(enumerator->Next()) _ld(enumerator->Current()); enumerator->Reset(); } btw φτιαχνω μια ταινιοθηκη
dop Δημοσ. 29 Δεκεμβρίου 2010 Δημοσ. 29 Δεκεμβρίου 2010 Τι σχέση έχει το inlining; Όσο κρατάς ABI compatibility και name mangling, η βιβλιοθήκη σου θα δουλεύει σωστά.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.