#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'
定义A类的成员函数为B类的友元函数,A类的成员函数必须先在B类前有定义
因为,程序是从上往下进行的,即使你声明了类,但是具体的成员函数没有的话,就会编译器就会认为该函数没有定义(即使你在后面的代码中定义了)
前面的代码解释不通,自然就不会看到后面的代码
也就是说,你在building里面定义goodboy的成员函数为友元函数,但是这个成员函数却没有事先声明,是不行的,但是你却可以定义一个函数(不是类的成员函数)
对您有帮助吗?
– Conan-jine 4年前