Sto lavorando a una delle sfide di programmazione nel libro Starting Out With C++ Early Objects 7th Edition e uno dei compiti richiede di creare una classe derivata dalla classe di stringhe STL. Sto postando la domanda allo scopo di capire cosa sono autorizzato a fare e come dovrei implementare la soluzione in modo che nessuno offra suggerimenti più avanzati.Come accedere alle variabili membro nella classe di stringa STL?
- Domanda come è scritto nel testo -
Palindrome Testing
un palindromo è una stringa che legge lo stesso all'indietro come in avanti. Ad esempio, le parole mamma, padre, signora e radar sono palindromi. Scrivi un class Pstring
derivato dallo STL string class
. Il Pstring class
aggiunge una funzione membro
bool isPalindrome()
che determina se la stringa è palindroma. Includere un costruttore che prende un oggetto STL string
come parametro e lo passa al costruttore della classe base della stringa. Metti alla prova la tua classe con un programma principale che chiede all'utente di inserire una stringa. Il programma utilizza la stringa per inizializzare un oggetto Pstring e quindi chiama isPalindrome() per determinare se la stringa immessa è un palindromo.
Potrebbe essere utile utilizzare l'operatore pedice [] della classe string: se str è un oggetto stringa e k è un numero intero, quindi str [k] restituisce il carattere nella posizione k nella stringa.
- Fine -
La mia domanda principale è come faccio ad accedere alla variabile membro che detiene il mio oggetto stringa se la classe che sto derivante da Pstring è una classe che non ho scritto e io non so come implementa i suoi membri?
Per esempio,
#include <string>
using namespace std;
class Pstring : public string
{
public:
Pstring(std::string text)
: string(text) { }
bool isPalindrome()
{
// How do I access the string if I am passing it to the base class?
// What I think I should do is...
bool is_palindrome = true;
auto iBegin = begin();
auto iEnd = end() - 1;
while (iBegin < iEnd && is_palindrome)
{
if (*iBegin++ != *iEnd--)
is_palindrome = false;
}
return is_palindrome;
// But I think this is wrong because...
// #1 The book did not discuss the keyword auto yet
// #2 The book discussed when a class is derived from another class,
// how the members from super class will be accessible to the sub class.
// However, with this assignment, I don't see how to access the members.
}
}
La ragione per cui mi sento come sto facendo questo è errato perché l'assegnazione menziona usando la notazione pedice, tuttavia, non capisco come usare la notazione pedice se I don' so il nome della variabile in cui è memorizzata la stringa.
Qualsiasi aiuto sarebbe molto apprezzato perché l'autore non fornisce le soluzioni a meno che non sia un istruttore che è piuttosto zoppo secondo me. Probabilmente ha a che fare con il fatto che questo è un testo accademico.
Mai derivano dalle classi STL. Sempre una cattiva idea Perché non provi invece la composizione? – Lalaland
L'autore non può fornire soluzioni perché è un idiota. – Duck
@Ethan Steinberg Sono completamente d'accordo, tuttavia, questo incarico richiede specificamente di farlo. –