Προς το περιεχόμενο

C++ : string* to void*


RestlessNick

Προτεινόμενες αναρτήσεις

Δημοσ.

καλημερα σε ολους,

 

μελετω λιγο 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 ;

}

Δημοσ.

Εχμ, υποτίθεται ότι έχουμε τα templates και όλα τα υπόλοιπα ώστε να αποφύγουμε το void*.

 

Εν πάση περιπτώση, δοκίμασε το static_cast<void*>(str) για την push_back και static_cast<string*> για τον [] operator.

  • 3 εβδομάδες αργότερα...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...