我试图将类成员函数指定为另一个类的朋友, 但它只允许我访问公共成员而不是受保护或私人成员。它具有免费功能,可以正常工作。
Visual Studio错误:
member "Class1::protected_int" (declared at line 9) is inaccessible
member "Class1::private_int" (declared at line 11) is inaccessible
class Class2;
class Class1 {
friend void Class2::TEST(const Class1& ex);
friend void TEST(const Class1& ex);
public:
int public_int;
protected:
int protected_int;
private:
int private_int;
};
class Class2{
public:
void TEST(const Class1& ex);
};
void Class2::TEST(const Class1& ex){
int pub = ex.public_int;
int pro = ex.protected_int;
int pri = ex.private_int;
}
void TEST(const Class1& ex){
int pub = ex.public_int;
int pro = ex.protected_int;
int pri = ex.private_int;
}
答案 0 :(得分:3)
该计划在这里已经形成不良:
friend void Class2::TEST(const Class1& ex);
Class2
不完整,因此您无法访问其成员。如果您重新排序代码,以便在需要时完成所有操作:
class Class1;
class Class2{
public:
void TEST(const Class1& ex);
};
class Class1{
friend void Class2::TEST(const Class1& ex);
friend void TEST(const Class1& ex);
// ...
};
然后一切都编好了。