RestlessNick Δημοσ. 16 Φεβρουαρίου 2007 Δημοσ. 16 Φεβρουαρίου 2007 καλημερα σε ολους, μελετω λιγο C++ και πρεπει να δημιουργησω μια κλαση που κληρονομει vector< void * > και μου ζητειται να ξαναοριστουν τα push_back() και operator[] ωστε να δεχεται και να παραγει strings ( casting ? ) ( κ μετα να την κανω templatized κατι το οποιο δε με απασχολει ακομη ) παρακατω ειναι μια προσπαθεια : #include <iostream> #include <string> #include <vector> using namespace std ; class StringVector : public vector< void* > { public: void push_back( string *str ) { cout << "Redefined push_back called ." << endl ; vector< void* > : push_back( str ) ; // error } string* operator[]( int i ) { string *t = (string*)( *(vector< void* > * ) this ) ; return ( t ) ; } } ; int main( void ) { StringVector sv ; string *str1 = new string( "Hello" ) ; string *str2 = new string( "Nick" ) ; sv.push_back( str1 ) ; cout << *(string*)sv[0] << endl ; sv.push_back( str2 ) ; cout << *(string*)sv[1] << endl ; return 0 ; }
dop Δημοσ. 16 Φεβρουαρίου 2007 Δημοσ. 16 Φεβρουαρίου 2007 Εχμ, υποτίθεται ότι έχουμε τα templates και όλα τα υπόλοιπα ώστε να αποφύγουμε το void*. Εν πάση περιπτώση, δοκίμασε το static_cast<void*>(str) για την push_back και static_cast<string*> για τον [] operator.
RestlessNick Δημοσ. 17 Φεβρουαρίου 2007 Μέλος Δημοσ. 17 Φεβρουαρίου 2007 to vrika, (aprose3ia itan telika), otan kano inherit apo vector< void* > 8elei 2 fores ano-kato-teleia
StreamKid Δημοσ. 4 Μαρτίου 2007 Δημοσ. 4 Μαρτίου 2007 sou synistw na apofeygeis to void... einai arketa bug-prone... kai btw, exeis enan pointer pou kanei point se void, dld se "tipota".. de vgazei kai poly nohma
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.