Estoy trabajando en uno de los desafíos de programación en el libro Starting Out With C++ Early Objects 7ma edición y una de las asignaciones pide crear una clase que se deriva de la clase de cadena STL. Estoy publicando la pregunta con el fin de comprender lo que se me permite hacer y cómo se supone que debo implementar la solución para que nadie ofrezca sugerencias más avanzadas.¿Cómo accedo a las variables miembro en la clase de cadena STL?
- pregunta como está escrito en el texto -
palíndromo Prueba
un palíndromo es una cadena que se lee igual hacia atrás como hacia adelante. Por ejemplo, las palabras mamá, papá, señora y radar son palíndromos. Escriba un class Pstring
derivado del STL string class
. El Pstring class
añade una función miembro
bool isPalindrome()
que determina si la cadena es un palíndromo. Incluya un constructor que tome un objeto STL string
como parámetro y lo pase al constructor de la clase base de cadena. Pruebe su clase teniendo un programa principal que le pida al usuario que ingrese una cadena. El programa usa la cadena para inicializar un objeto Pstring y luego llama a isPalindrome() para determinar si la cadena ingresada es un palíndromo.
Puede ser útil utilizar el operador de subíndice [] de la clase de cadena: si str es un objeto de cadena yk es un entero, entonces str [k] devuelve el caracter en la posición k en la cadena.
- Fin -
Mi pregunta principal es ¿cómo puedo acceder a la variable miembro que ejerza mi objeto de cadena si la clase estoy derivando PString de una clase que no he escrito y no sé cómo implementa sus miembros?
Por ejemplo,
#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 razón por la que siento que estoy haciendo esto de forma incorrecta se debe a la asignación menciona usando la notación de subíndice, sin embargo, no entiendo cómo utilizar la notación de subíndice si yo no' t saber el nombre de la variable donde se almacena la cadena.
Cualquier ayuda sería muy apreciada porque el autor no proporciona las soluciones a menos que yo sea un instructor que es bastante cojo en mi opinión. Probablemente tiene que ver con el hecho de que este es un texto académico.
Nunca se derivan de las clases STL. Siempre una mala idea. ¿Por qué no pruebas la composición? – Lalaland
El autor puede no proporcionar soluciones porque es un idiota. – Duck
@Ethan Steinberg Estoy completamente de acuerdo, sin embargo, esta tarea específicamente pide que haga eso. –