Я работаю над одной из проблем программирования в книге «Запуск с использованием C++ Early Objects 7th Edition», и одно из заданий предлагает создать класс, который является производным от строкового класса STL. Я отправляю вопрос с целью понять, что мне разрешено делать, и как я должен реализовывать решение, чтобы никто не предлагал более продвинутые предложения.Как получить доступ к переменным-членам в классе строк STL?
- Вопрос, как написано в тексте -
Palindrome Тестирование
палиндром является строка, которая читается одинаково назад, как вперед. Например, слова mom, dad, madam, и радар являются палиндромами. Напишите class Pstring
, который является производным от STL string class
. Pstring class
добавляет функцию-член
bool isPalindrome()
, который определяет, является ли строка палиндромом. Включите конструктор, который принимает объект STL string
в качестве параметра и передает его конструктору базового класса строки. Проверьте свой класс, указав основную программу, которая просит пользователя ввести строку. Программа использует строку для инициализации объекта Pstring, а затем вызывает isPalindrome(), чтобы определить, является ли введенная строка палиндром.
Возможно, вам полезно использовать индексный оператор [] для строкового класса: если str является строковым объектом, а k является целым числом, то str [k] возвращает caracter в позиции k в строке.
- Конец -
Моего главный вопрос, как я могу получить доступ к переменному-члену, который держит мой объект строки, если класс Я вывод 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.
}
}
Причина, я чувствую, что я делаю это неправильно, потому что назначение упоминает, используя индекс обозначения, однако, я не понимаю, как использовать индекс обозначения, если я не» t знать имя переменной, в которой хранится строка.
Любая помощь будет принята с благодарностью, потому что автор не предоставляет решения, если я не преподаватель, который, по моему мнению, довольно хромой. Вероятно, это связано с тем, что это академический текст.
Никогда не проистекают из СТЛ классов. Всегда плохая идея. Почему бы вам не попробовать композицию? – Lalaland
Автор не может предлагать решения, потому что он идиот. – Duck
@ Ethan Steinberg Я полностью согласен, однако, это задание специально просит об этом. –