Có bằng cách nào đó có thể, để thực hiện những điều sau:Ẩn thực hiện bằng cách sử dụng một con trỏ (Pimpl thành ngữ)
x.hpp - file này được bao gồm bởi nhiều lớp khác
class x_impl; //forward declare
class x {
public:
//methods...
private:
x_impl* impl_;
};
x .cpp - việc triển khai
#include <conrete_x>
typedef concrete_x x_impl; //obviously this doesn't work
//implementation of methods...
Vì vậy, về cơ bản, tôi muốn người dùng bao gồm tệp x.hpp, nhưng không biết tiêu đề conrete_x.hpp.
Vì tôi có thể sử dụng concrete_x
chỉ bởi một con trỏ và nó chỉ xuất hiện như một thành viên dữ liệu cá nhân, nên một khai báo chuyển tiếp là đủ để trình biên dịch biết bao nhiêu không gian để chuẩn bị cho nó. Nó trông khá giống như "thành ngữ pimpl" nổi tiếng.
Bạn có thể giúp tôi với điều này không?
PS. Tôi không muốn sử dụng số void*
và bỏ nó xung quanh ..
tại sao bạn không thể có concrete_x kế thừa từ x_impl? – StoryTeller
Chính xác thì vấn đề của bạn là gì? – Grizzly
Tại sao bạn không muốn tự định nghĩa 'lớp x_impl' trong? –