Tôi nhận ra rằng có rất nhiều câu hỏi liên quan đến các lớp bạn bè trong C++. Câu hỏi của tôi, mặc dù, được gắn với một kịch bản cụ thể. Với mã dưới đây, có thích hợp để sử dụng bạn bè theo cách như vậy không?Lớp học bạn bè C++
class Software
{
friend class SoftwareProducer;
SoftwareProducer* m_producer;
int m_key;
// Only producers can produce software
Software(SoftwareProducer* producer) : m_producer(producer) { }
public:
void buy()
{
m_key = m_producer->next_key();
}
};
class SoftwareProducer
{
friend class Software;
public:
Software* produce()
{
return new Software(this);
}
private:
// Only software from this producer can get a valid key for registration
int next_key()
{
return ...;
}
};
Cảm ơn,
Trân trọng,
Tôi đã làm Phần mềm làm bạn của Nhà sản xuất phần mềm để có quyền truy cập vào phương thức next_key riêng tư. – Alex
Không phải là cách khác? Để cho phép nhà xây dựng riêng của Phần mềm được gọi từ Nhà sản xuất Phần mềm, bạn cần phải làm cho Nhà sản xuất Phần mềm trở thành bạn của Phần mềm mà tôi đã nói là hợp lý. Nhưng bạn cũng đã làm cho phần mềm là một người bạn của SoftwateProducer để phương thức next_key() có thể được gọi mà tôi cảm thấy là không cần thiết. – Naveen
Làm cách nào khác có thể một cá thể phần mềm truy cập phương thức next_key của nhà sản xuất nếu nó là riêng tư? – Alex