Vui lòng xem my first attempt at answering this . Tôi đã bỏ quên kể toàn bộ câu chuyện trước đây trong một nỗ lực để đơn giản hóa mọi thứ. Hóa ra ví dụ của tôi hoạt động! Lấy làm tiếc.Làm thế nào để tôi làm cho một người bạn chính của lớp học của tôi từ trong thư viện?
Toàn bộ câu chuyện là đây là thư viện chứa một lớp trong một tệp và tệp chính trong một tệp khác, tất cả được liên kết trong thư viện của tôi. Thư viện đang cung cấp cơ sở cho một Khung Quy trình, đó là lý do tại sao thư viện chính nằm trong thư viện chứ không phải là quy trình.
Dưới đây là phiên bản rút gọn của những gì tôi có.
pf.hpp
using namespace std;
namespace MyNamespace
{
class ProcessManager
{
public:
friend int main(int argc, char** argv);
private:
void test();
};
};
pf.cpp
#include "pf.h"
namespace MyNamespace
{
ProcessManager::test()
{
cout << "My friend has accessed my member" << endl;
}
};
pfmain.cpp
#include "pf.hpp"
int main(int argc, char** argv)
{
ProcessManager pm;
pm.test();
}
Lưu ý rằng điều này không thành trong việc lập thư viện
Những gì tôi đã thử là:
- Moving người bạn khắp nơi
- Làm tài liệu tham khảo bạn bè để sử dụng chính phạm vi toàn cầu (ví dụ :: chính)
- Làm người bạn và chính tờ khai sử dụng phạm vi toàn cầu
tôi thiếu gì?
Cảm ơn!
Đây là một chút ngoài chủ đề, nhưng rất nhiều người sẽ nói rằng từ khóa 'friend' không bao giờ là một giải pháp tốt. – asveikau
Nó không lý tưởng tôi đồng ý, nhưng đôi khi bạn không có lựa chọn tốt khác thay thế – Jaime
Có thể muốn xem xét kết bạn với các biến thể khác của 'main()'. Không chắc chắn nếu họ đang trên Facebook mặc dù. –