Tôi đang làm việc trên một trong những thách thức lập trình trong cuốn sách Bắt đầu với C++ Early Objects 7th Edition và một trong các bài tập yêu cầu tạo một lớp có nguồn gốc từ lớp chuỗi STL. Tôi đang đăng câu hỏi với mục đích hiểu những gì tôi được phép làm và cách tôi phải triển khai giải pháp để không ai đưa ra đề xuất nâng cao hơn.Làm cách nào để truy cập các biến thành viên trong lớp chuỗi STL?
- Câu hỏi y như đã chép trong văn bản -
Palindrome Testing
Một Palindrome là một chuỗi mà đọc cùng lạc hậu như về phía trước. Ví dụ: các từ mẹ, cha, madam và radar là palindromes. Viết class Pstring
có nguồn gốc từ STL string class
. Pstring class
thêm chức năng thành viên
bool isPalindrome()
xác định xem chuỗi có phải là palindrome hay không. Bao gồm một hàm tạo lấy một đối tượng STL string
làm tham số và chuyển nó tới hàm tạo lớp cơ sở chuỗi. Kiểm tra lớp của bạn bằng cách có một chương trình chính yêu cầu người dùng nhập chuỗi. Chương trình sử dụng chuỗi để khởi tạo một đối tượng Pstring và sau đó gọi isPalindrome() để xác định chuỗi được nhập là palindrome hay không.
Bạn có thể thấy hữu ích khi sử dụng toán tử subscript [] của lớp chuỗi: nếu str là đối tượng chuỗi và k là số nguyên, sau đó str [k] trả về ký tự ở vị trí k trong chuỗi.
- End -
câu hỏi chính của tôi là làm thế nào để truy cập vào các biến thành viên nắm giữ đối tượng chuỗi của tôi nếu lớp tôi bắt nguồn từ Pstring là một lớp học tôi đã không viết và tôi không biết làm thế nào nó thực hiện các thành viên của nó?
Ví dụ,
#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.
}
}
Lý do tôi cảm thấy như tôi đang làm này không chính xác là do sự phân công đề cập đến sử dụng ký hiệu phụ, tuy nhiên, tôi không hiểu làm thế nào để sử dụng các ký hiệu subscript nếu tôi don' t biết tên của biến nơi chuỗi được lưu trữ.
Bất kỳ trợ giúp nào cũng sẽ được đánh giá cao bởi vì tác giả không cung cấp giải pháp trừ khi tôi là người hướng dẫn khá lame theo ý kiến của tôi. Nó có thể đã làm với thực tế rằng đây là một văn bản học thuật.
Không bao giờ lấy được từ các lớp học STL. Luôn luôn là một ý tưởng tồi. Tại sao bạn không thử sáng tác thay thế? – Lalaland
Tác giả có thể không cung cấp giải pháp vì anh ta là kẻ ngốc. – Duck
@Ethan Steinberg Tôi hoàn toàn đồng ý, tuy nhiên, nhiệm vụ này đặc biệt yêu cầu làm điều đó. –