为什么这段代码编译不通过
我将SB2成员函数设为Building类的友元,为啥还是访问不了Building类里的私有方法#include <iostream>
#include <string>
using namespace std;
class Building
{
//告诉编译器goodGay类中的visit成员函数 是Building好朋友,可以访问私有内容
public:
Building();
public:
string m_SittingRoom; //客厅
private:
string m_BedRoom;//卧室
friend void a(Building& b);
friend class SB1;
friend void SB2::visit();
};
Building::Building()
{
this->m_SittingRoom = "客厅";
this->m_BedRoom = "卧室";
}
void a(Building& b){
cout << b.m_SittingRoom << endl;
cout << b.m_BedRoom << endl;
}
class SB1{
public:
SB1(){
sb = new Building();
}
void visit(){
cout << sb->m_SittingRoom << endl;
cout << sb->m_BedRoom << endl;
}
Building* sb;
};
class SB2{
public:
SB2(){
sb = new Building();
}
void visit(){
cout << sb->m_SittingRoom << endl;
cout << sb->m_BedRoom << endl;
}
Building* sb;
};
int main(){
} 私有成员变量 不是私有方法 求助啊 有人吗 编译不通过编译器说什么了?说的是什么意思? friend void SB2::visit();//sb2声明在后,Building不认识 jhq999 发表于 2023-2-14 18:24
是不是在第5行之前加个class SB2;
要是的话,还是错的
error: invalid use of incomplete type ‘class SB2’ 本帖最后由 jhq999 于 2023-2-14 19:25 编辑
#include <iostream>
#include <string>
using namespace std;
class Building;
class SB2{//////////////
public:
Building *sb;
SB2();
void visit();
};
class Building
{
//告诉编译器goodGay类中的visit成员函数 是Building好朋友,可以访问私有内容
public:
Building();
public:
string m_SittingRoom; //客厅
private:
string m_BedRoom;//卧室
friend void a(Building& b);
friend class SB1;
friend void SB2::visit();
};
Building::Building()
{
this->m_SittingRoom = "客厅";
this->m_BedRoom = "卧室";
}
void a(Building& b){
cout << b.m_SittingRoom << endl;
cout << b.m_BedRoom << endl;
}
SB2::SB2(){
sb = new Building();
}
void SB2::visit(){
cout << sb->m_SittingRoom << endl;
cout << sb->m_BedRoom << endl;
}
class SB1{
public:
SB1(){
sb = new Building();
}
void visit(){
cout << sb->m_SittingRoom << endl;
cout << sb->m_BedRoom << endl;
}
Building* sb;
};
int main(){
SB2 s2;
s2.visit();
}
页:
[1]