成员函数做友元的出现未申明问题


#include<iostream>
#include<string>
using namespace std;

class Building;
class Person
{
public:
    Person();

    void visit01()
    {
        cout << "参观的是:" << house->m_Livingroom << endl;
    }

    void visit02();
private:
    Building *house;
};
class Building
{
    friend void Person::visit02();
public:
    string m_Livingroom = "客厅";
private:
    string m_Bedroom = "卧室";
};

Person::Person()
{
    house = new Building;
}

void Person::visit02()
{
    cout << "参观的是:" << house->m_Bedroom << endl;
}

void test01()
{
    Person Tony;
    Tony.visit01();
    Tony.visit02();
}

int main()
{
    test01();
    return 0;
}

img

问题二:

#include<iostream>
#include<string>
using namespace std;

class Building;
class Person
{
public:
    Person();
    void visit01();
    void visit02();
private:
    Building *house;
    house = new Building;
};
class Building
{
    friend void Person::visit02();
public:
    string m_Livingroom = "客厅";
private:
    string m_Bedroom = "卧室";
};

Person::Person()
{
    
}
void Person::visit01()
{
    cout << "Tony参观的是:" << house->m_Livingroom << endl;
}
void Person::visit02()
{
    cout << "Tony参观的是:" << house->m_Bedroom << endl;
}

void test01()
{
    Person Tony;
    Tony.visit01();
    Tony.visit02();
}

int main()
{
    test01();
    return 0;
}

img


为什么这里的new语句在13,14行使用就报错,在Person的构造函数中使用就没问题