나는 C++ Early Objects 7th Edition으로 시작하는 책에서 프로그래밍 문제 중 하나를 다루고 있으며, 할당 중 하나는 STL 문자열 클래스에서 파생 된 클래스를 만들 것을 요청합니다. 나는 내가 할 수있는 일을 이해하고 그 해결책을 구현하기 위해 어떻게해야 하는지를 이해할 목적으로 질문을 게시하여 아무도 더 많은 제안을하지 않도록합니다.STL 문자열 클래스의 멤버 변수에 어떻게 액세스합니까?
-이 텍스트로 작성과 같은 질문 -
회문 테스트
회문 앞으로 같은 역을 읽는 문자열입니다. 예를 들어, 엄마, 아빠, 마담 및 레이더은 문장입니다. STL string class
에서 파생 된 class Pstring
을 작성하십시오. Pstring class
문자열이 회문인지 여부를 판정하는 멤버 함수
bool isPalindrome()
를 추가한다. STL string
객체를 매개 변수로 사용하여 문자열 기본 클래스 생성자에 전달하는 생성자를 포함합니다. 사용자에게 문자열을 입력하도록 요청하는 메인 프로그램을 가지고 클래스를 테스트하십시오. 프로그램은 문자열을 사용하여 Pstring 객체를 초기화 한 다음 isPalindrome()을 호출하여 입력 된 문자열이 회문인지 여부를 확인합니다.
문자열 클래스의 첨자 연산자 []를 사용하는 것이 유용 할 수 있습니다. str이 문자열 객체이고 k가 정수인 경우 str [k]는 문자열의 k 위치에서 caracter를 반환합니다.
- 끝 - 나는에서 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.
}
}
내가 할당이 첨자 표기법을 사용하여 언급 때문에 잘못입니다 뭐하는 거지 같은 나는 그러나, 느끼는 이유, 내가 돈 '경우 첨자 표기법을 사용하는 방법을 이해하지 않습니다 문자열이 저장된 변수의 이름을 알 수 없습니다.
내 의견으로는 매우 불충분 한 강사가 아닌 이상 저자가 솔루션을 제공하지 않으므로 도움을 주실 수 있습니다. 이것이 아마도 학문적 텍스트라는 사실과 관련이있을 것입니다.
절대로 STL 클래스에서 파생 없습니다. 항상 나쁜 아이디어. 대신에 작곡을 해보 시지 않겠습니까? – Lalaland
저자는 바보이기 때문에 해결책을 제시하지 못할 수도 있습니다. – Duck
@Ethan Steinberg 그러나이 임무는 특별히 그것을 요구합니다. –