tôi đang làm việc trên một số mã, nơi tôi gặp phải một tình huống tương tự như thế này:Cấp quyền truy cập cho nhà xây dựng riêng tư mà không có bạn bè?
struct Bar;
struct Foo{
friend struct Bar;
private:
Foo(){}
void f(){}
void g(){}
};
struct Bar {
Foo* f;
Bar() { f = new Foo();}
~Bar() { delete f;}
};
int main(){
Bar b;
}
Tôi muốn có Bar
không như friend
của Foo
, bởi vì bên cạnh Foo
s constructor Bar
không cần truy cập vào bất kỳ của Foo
phương thức riêng tư (và do đó không được có quyền truy cập). Có cách nào để chỉ cho phép Bar
tạo Foo
giây mà không cần phải kết bạn với họ không?
PS: nhận thấy rằng câu hỏi có thể không rõ ràng 100%. Tôi không quan tâm nếu nó là thông qua bạn bè hay không, chỉ là một thực tế rằng tất cả các Bar
có quyền truy cập vào tất cả các phương pháp tư nhân là làm phiền tôi (mà thường là trường hợp với friends
) và đó là những gì tôi muốn tránh. May mắn là không có câu trả lời nào cho đến nay có vấn đề với công thức tệ hại đó.
Cảm ơn bạn đã chuyển nhận xét "Không. Nhưng ..." thành một câu trả lời hay. Tôi đã sợ có một lý do tôi không thể sử dụng nó cho nhà xây dựng – user463035818
@ tobi303 Xin lỗi về sự sợ hãi. Hai giây sau khi nhận xét tôi nhận ra tôi đang cố trả lời câu hỏi của bạn trong một bình luận. – StoryTeller