c++ class 函数 friend to another class

c++ class function friend to another class

我正在尝试将一个 class 成员函数指定为另一个 class 的友元函数, 但它只允许我访问 public 成员,而不是受保护或私有成员。它与免费功能配合得很好。

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;
}

Image

这里的程序已经是错误的:

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);

    // ...
};

然后一切都可以正常编译。