0

如果我有两节课:

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实例化的时候,传入一个指向父类的指针,之后调用了doSomeWork()函数,需要从父类获取值,所以调用了mp_parent->privateFunction()。

实现这一目标的最佳方法是什么?- 如果可以避免,我真的不想将 privateFunction() 设为公共函数,但它不能按原样工作,因为它是私有的:o

还有其他选择吗?

4

2 回答 2

1

也许您可以使用“朋友”关键字:

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;}

}
于 2014-11-11T15:08:30.987 回答
0

这是朋友的经典用法:

class Top
{
   private:
   friend class Worker;
   worker m_Worker;

   int privateFunction() {return 1;}

}

你应该考虑交朋友,并考虑是否可以重新设计以避免它们,但有时它是有道理的。

于 2014-11-11T15:12:27.773 回答