Tôi có một lớp chứa đơn giản, cấp thấp được sử dụng bởi một lớp tệp cấp cao hơn. Về cơ bản, lớp tệp sử dụng vùng chứa để lưu trữ sửa đổi cục bộ trước khi lưu phiên bản cuối cùng vào tệp thực. Một số phương thức, do đó, chuyển trực tiếp từ lớp container sang lớp tệp. (Ví dụ: Resize()
.)Phương pháp sao chép từ thành viên
Tôi vừa xác định các phương thức trong lớp tệp để gọi các biến thể lớp chứa của chúng. Ví dụ:
void FileClass::Foo()
{
ContainerMember.Foo();
}
Điều này, tuy nhiên, ngày càng trở thành một mối phiền toái. Có cách nào tốt hơn để làm điều này?
Dưới đây là một ví dụ đơn giản:
class MyContainer
{
// ...
public:
void Foo()
{
// This function directly handles the object's
// member variables.
}
}
class MyClass
{
MyContainer Member;
public:
void Foo()
{
Member.Foo();
// This seems to be pointless re-implementation, and it's
// inconvenient to keep MyContainer's methods and MyClass's
// wrappers for those methods synchronized.
}
}
Tôi thấy thành phần ở đây, không phải là thừa kế. Tui bỏ lỡ điều gì vậy? –
@Doug Tôi hỏi liệu có một cách để kế thừa từ lớp container hay 'MyContainer' trong ví dụ của tôi, chỉ với một vài phương thức. (Hoặc một giải pháp tốt hơn, nếu có một.) Tôi sẽ chỉnh sửa câu hỏi để rõ ràng hơn. – Maxpm
Trong trường hợp đó, có vẻ như bạn nên chia MyContainer thành một lớp có các phương thức bạn muốn (và sau đó kế thừa từ đó) và các phương thức còn lại của MyContainer trong một lớp khác. – dlev