首页 新闻 搜索 专区 学院

c++: 成员函数作友元函数

0
悬赏园豆:5 [已解决问题] 解决于 2020-05-23 12:52
#include <iostream>
#include <string>
using namespace std;

//class goodBoy;
class Building{
    //friend class goodBoy;
    friend void goodBoy::visit();
public:
    Building(){
        this->m_SittingRoom = "客厅";
        this->m_BeddingRoom = "卧室";
    }
public:
    string m_SittingRoom;
private:
    string m_BeddingRoom;
};
class goodBoy{
public:
    goodBoy(){
        build = new Building;
    }

    void visit(){
        cout << "好朋友正在访问 " << this->build->m_SittingRoom << endl;
        cout << "好朋友正在访问 " << this->build->m_BeddingRoom << endl;
    }

private:
    Building * build;
};

void test03(){
    goodBoy * boy = new goodBoy;
    boy->visit();

}

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

报错:

error: use of undeclared identifier 'goodBoy'

牛坤的主页 牛坤 | 初学一级 | 园豆:193
提问于:2020-05-21 23:08

对您有帮助吗?

Conan-jine 1年前
< >
分享
最佳答案
0

定义A类的成员函数B类的友元函数,A类的成员函数必须先在B类前有定义
因为,程序是从上往下进行的,即使你声明了类,但是具体的成员函数没有的话,就会编译器就会认为该函数没有定义(即使你在后面的代码中定义了)
前面的代码解释不通,自然就不会看到后面的代码

收获园豆:5
Conan-jine | 小虾三级 |园豆:1271 | 2020-05-21 23:21

也就是说,你在building里面定义goodboy的成员函数为友元函数,但是这个成员函数却没有事先声明,是不行的,但是你却可以定义一个函数(不是类的成员函数)

Conan-jine | 园豆:1271 (小虾三级) | 2020-05-21 23:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册