C++ Can';不要在使用中发现错误;“朋友”;另一类C的函数++;
是的,我知道,C++ Can';不要在使用中发现错误;“朋友”;另一类C的函数++;,c++,friend,C++,Friend,是的,我知道,private修饰符是为了禁止访问类数据而创建的 但是,friend不打算允许特殊访问它吗 编译器: main.cpp:在成员函数“void C::blah(B&)”中: main.cpp:48:26:错误:“int B::a”在此上下文中是私有的 std::cout您正在声明一个名为blah的非成员函数,但不是C::blah为friend 您可以将代码更改为以下内容,并注意声明和定义的顺序 class B; class C { public: void blah(B&a
private
修饰符是为了禁止访问类数据而创建的但是,
friend
不打算允许特殊访问它吗
编译器:main.cpp:在成员函数“void C::blah(B&)”中:
main.cpp:48:26:错误:“int B::a”在此上下文中是私有的
std::cout您正在声明一个名为
blah
的非成员函数,但不是C::blah
为friend
您可以将代码更改为以下内容,并注意声明和定义的顺序
class B;
class C {
public:
void blah(B& obj);
};
class B {
private:
int a = 2;
public:
friend void C::blah(B& obj);
};
void C::blah(B& obj) {
std::cout << obj.a << std::endl;
}
B类;
C类{
公众:
无效的废话(B&obj);
};
B类{
私人:
INTA=2;
公众:
朋友空C::布拉(B&obj);
};
空C::诸如此类(B&obj){
标准::cout
class B;
class C {
public:
void blah(B& obj);
};
class B {
private:
int a = 2;
public:
friend void C::blah(B& obj);
};
void C::blah(B& obj) {
std::cout << obj.a << std::endl;
}