即使在成员函数成为朋友之后也无法访问成员

Abh*_*yan 2 c++

在下面的代码中,如果我成为College类的类朋友,University那么我可以访问University类的私有属性.但是在College类I中我只希望print函数访问那些私有属性.所以,我只把班级的print功能College作为朋友,但似乎没有用.我错过了什么或做错了什么?

错误:无法访问University类的名称私有属性.

#include <iostream>

//class college; 

class University{
    //friend class college;   // Works fine
    friend void College::print(University &ob);    // doesn't work

public:
    University() = default;

    University(int i, char *n) : buildings{ i }, name{ n } {}

private:
    int buildings; 
    char *name; 
};

class College{
public:
    void print(University &ob){
        std::cout << "I am a part of " << ob.name;   // <-----------
    }
};

int main()
{
    University first{ 2000, "Mit" };

    College c; 
    c.print(first); 

    return 0; 
}
Run Code Online (Sandbox Code Playgroud)

R S*_*ahu 5

为了使用

friend void College::print(University &ob);
Run Code Online (Sandbox Code Playgroud)

类的定义College必须是可见的.

class University;

class College{
public:
    void print(University &ob);
};

class University{
    //friend class college;   // Works fine
    friend void College::print(University &ob);

public:
    University() = default;

    University(int i, char *n) : buildings{ i }, name{ n } {}

private:
    int buildings; 
    char *name; 
};

void Collelge::print(University &ob){
        std::cout << "I am a part of " << ob.name;   // <-----------
}
Run Code Online (Sandbox Code Playgroud)