Pracuję nad jednym z wyzwań programowania w książce Początek z C++ Early Objects 7th Edition, a jedno z zadań prosi o utworzenie klasy, która wywodzi się z klasy ciągów STL. Publikuję pytanie w celu zrozumienia, co mogę zrobić i jak mam wdrożyć to rozwiązanie, aby nikt nie oferował bardziej zaawansowanych sugestii.Jak uzyskać dostęp do zmiennych członkowskich w klasie ciągów STL?
- Pytanie, jak to jest napisane w tekście -
Palindrome Testowanie
palindrom to ciąg znaków, który brzmi tak samo jak do przodu do tyłu. Na przykład słowa mama, tata, madam, i radar są palindromami. Napisz class Pstring
, który pochodzi z STL string class
. Pstring class
dodaje funkcję składową
bool isPalindrome()
która określa, czy ciąg jest palindrom. Dołącz konstruktor, który pobiera obiekt STL string
i przekazuje go do konstruktora klasy łańcuchowej. Sprawdź swoją klasę, uruchamiając program główny, który prosi użytkownika o wprowadzenie ciągu znaków. Program używa łańcucha do zainicjowania obiektu Pstring, a następnie wywołuje funkcjęPalindrome() w celu ustalenia, czy wprowadzony łańcuch jest palindromem.
Może się okazać, że użyteczne jest użycie operatora [] [] klasy ciągów: jeśli str jest obiektem typu string, a k jest liczbą całkowitą, to str [k] zwraca znak char w pozycji k w ciągu znaków.
- Koniec -
Moje główne pytanie brzmi: jak mogę uzyskać dostęp do zmiennej członka, który posiada mój obiekt string jeśli klasa ja wynikające z Pstring to klasa nie pisałem i nie wiem jak wdraża swoich członków?
Na przykład
#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.
}
}
Powodem czuję, że robię to dlatego, że nieprawidłowo przypisanie wspomina notacji indeksu, jednak nie rozumiem jak używać notacji indeksie jeśli don” t znać nazwę zmiennej, w której zapisany jest ciąg znaków.
Każda pomoc byłaby bardzo doceniana, ponieważ autor nie zapewnia rozwiązań, chyba że jestem instruktorem, który jest moim zdaniem kiepski. Prawdopodobnie ma to związek z faktem, że jest to tekst akademicki.
Nigdy nie wywodzą się z klas STL. Zawsze zły pomysł. Dlaczego zamiast tego nie chcesz wypróbować kompozycji? – Lalaland
Autor może nie dostarczyć rozwiązań, ponieważ jest idiotą. – Duck
@Ethan Steinberg Całkowicie się zgadzam, jednak zadanie to konkretnie wymaga tego. –