C++ 如何在不使用friend类的情况下由另一个类访问类的私有成员
假设我们有以下情况:C++ 如何在不使用friend类的情况下由另一个类访问类的私有成员,c++,inheritance,C++,Inheritance,假设我们有以下情况: class base{ } class derived1 : public base{ private: void fun(); friend class derived2; } class derived2 : public base{ derived1 ob; void fun2(){ ob->fun(); } 我想在derived2的fun2()中使用derived1的fun(),但不使用friend类并在derived1中保持fu
class base{
}
class derived1 : public base{
private:
void fun();
friend class derived2;
}
class derived2 : public base{
derived1 ob;
void fun2(){
ob->fun();
}
我想在derived2的fun2()中使用derived1的fun(),但不使用friend类并在derived1中保持fun()的私密性。不确定这对您来说是否是一个可行的解决方案,但它是:
class base{
public:
virtual void fun() {}
};
class derived1 : public base{
private:
void fun() {}
};
class derived2 : public base{
derived1 ob;
void fun2(){
static_cast<base&>(ob).fun();
}
};
类基{
公众:
虚拟void fun(){}
};
类derived1:公共基{
私人:
void fun(){}
};
派生类2:公共基{
衍生1 ob;
void fun2(){
静态播放(ob.fun();
}
};
保密的关键在于你不应该这样做。