namespace li2 {
/*------------------------------------------------------------------------------
class TextToken
Rappresenta una sequenza di caratteri (token) appartenenente a una data categoria
-----------------------------------------------------------------------------*/
class TextToken {
public:
// TextToken::Type: elenco dei tipi token di interesse
enum Type {
Word, // parola
SpaceSequence, // sequenza di spazi
PunctuationMark // simbolo di punteggiatura
} ;
// TextToken::TextToken: costruttore parametrico
// permette di costruire un oggetto TextToken a partire dal tipo e dal
// valore del token
// Il valore di un token è la sequenza di caratteri che lo compongono
TextToken(Type type, const string &value)
: mTtype(type), mValue(value) {}
Type mTtype;
string mValue;
};
/*------------------------------------------------------------------------------
class TextLine
Rappresenta una linea di testo
La linea di testo è rappresentata mediante la sequenza di TextToken in essa
contenuti
-----------------------------------------------------------------------------*/
class TextLine {
public:
// TextLine::TextLine: costruttore parametrico
// Costruisce un oggetto TextLine a partire da una stringa
// L'implementazione del costruttore suddivide la stringa text nella
// sequenza di token che la compongono
TextLine(const string &text);
// costruttore di copia
TextLine(const TextLine &textline);
// distruttore
~TextLine();
// operatore di assegnazione
TextLine &operator=(const TextLine &textline);
// TextLine::getText
// restituisce il testo della linea composto a partire dalla giustapposizione dei token
// contentuti nella linea di testo
string getText();
// TextLine::getTokenCount
// restituisce il numero di token nella linea di testo
size_t getTokenCount() const;
// TextLine::getToken
// restituisce l'i-esimo token nella linea di testo
TextToken *getToken(size_t i) const;
private:
// mTokens contiene la sequenza di TextToken che compongono la linea di testo
vector<TextToken *> mTokens;
};
Questa qui sopra è la classe di riferimento.
Io volevo avere delle indicazioni su come implementare la funzione:
TextLine &TextLine:perator=(const TextLine &textline)
io pensavo di farlo in questo modo:
TextLine &TextLine:perator=(const TextLine &textline)
{
if (this == &textline) return *this;
mTokens = textline.mTokens;
for(inti=0; i<mTokens.size(); ++i)
mTokens[i] = textline.mTokens[i];
return *this;
}
Grazie in anticipo per l'aiuto.![]()