c ++类函数的朋友到另一个类

时间:2016-07-22 16:02:35

标签: c++ class friend friend-function

我试图将类成员函数指定为另一个类的朋友, 但它只允许我访问公共成员而不是受保护或私人成员。它具有免费功能,可以正常工作。

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

1 个答案:

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

    // ...
};

然后一切都编好了。