如果我有两个班级:
class worker
{
Top *mp_parent;
worker(Top *parent) : mp_parent(parent) {};
int doSomeWork()
{
int i = mp_parent->privateFunction(); // This is the function I want to call
}
}
class Top
{
private:
worker m_Worker;
int privateFunction() {return 1;}
}
Top类包含worker类的实例。实例化worker时,会传入指向父类的指针。 之后,函数doSomeWork()被调用,需要从父级获取值,因此它调用mp_parent-> privateFunction()。
实现这一目标的最佳方法是什么? - 我真的不想让privateFunction()成为一个公共函数,如果我可以避免它,但它不能正常工作,因为它是私有的:o
还有其他选择吗?
答案 0 :(得分:1)
也许你可以使用'friend'关键字:
class worker
{
Top *mp_parent;
worker(Top *parent) : mp_parent(parent) {};
int doSomeWork()
{
int i = mp_parent->privateFunction(); // This is the function I want to call
}
}
class Top
{
friend class worker;
private:
worker m_Worker;
int privateFunction() {return 1;}
}
答案 1 :(得分:0)
这是朋友的经典用法:
class Top
{
private:
friend class Worker;
worker m_Worker;
int privateFunction() {return 1;}
}
你应该考虑交朋友,并考虑是否可以重新设计以避免它们,但有时它是有道理的。