Я работаю над одной из задач программирования в книге «Начиная с ранних объектов C ++, 7-е издание», и одно из заданий просит создать класс, производный от строкового класса STL.Я отправляю вопрос с целью понять, что мне разрешено делать и как я должен реализовывать решение, чтобы никто не предлагал более продвинутые предложения.
- Вопрос, как написано втекст -
Тестирование палиндрома
Палиндром - это строка, которая читается так же, как и вперед.Например, слова мама, папа , мадам и радар являются палиндромами.Напишите class Pstring
, который получен из STL string class
.Pstring class
добавляет функцию-член
bool isPalindrome()
, которая определяет, является ли строка палиндромом.Включите конструктор, который принимает объект STL string
в качестве параметра и передает его конструктору базового класса строки.Протестируйте свой класс, используя основную программу, которая просит пользователя ввести строку.Программа использует строку для инициализации объекта Pstring, а затем вызывает isPalindrome (), чтобы определить, является ли введенная строка палиндромом.
Может оказаться полезным использовать оператор индекса [] строкового класса: ifstr - строковый объект, а k - целое число, тогда str [k] возвращает символ в позиции k в строке.
- End -
Мой главный вопрос: как сделатьЯ получаю доступ к переменной-члену, которая содержит мой строковый объект, если класс, из которого я получаю Pstring, является классом, который я не написал, и я не знаю, как он реализует свои члены?
Например,
#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.
}
}
Причина, по которой я чувствую, что я делаю это неправильно, заключается в том, что в назначении упоминается с помощью индексной записи, однако я не понимаю, как использовать индексную запись, если я не знаю имя переменной, в которой находится строкахранится.
Любая помощь будет принята с благодарностью, потому что автор не предоставляет решения, если я не инструктор, которыйНа мой взгляд, он довольно отстойный.Вероятно, это связано с тем, что это академический текст.