C ++从另一个类访问私有结构

时间:2011-03-12 14:56:23

标签: c++ private

我有一个如下所示的课程:

class B;
class A
{
   public:
       A();
      ~A();
      void createStuff(.......); //??

  private:
      B *b;
};

对象B包含另一个类'C',它有大约20个类成员变量。

我希望类A的用户能够使用一组参数调用函数createStuff(...),这样我就可以构造对象C.这样做的最佳方法是什么?

4 个答案:

答案 0 :(得分:2)

授予访问其私有成员的类的机制称为友谊。

答案 1 :(得分:1)

根据您发布的内容,看起来像这样的东西可能会起作用:

class B
class A:
{
   public:
       A();
      ~A();
      void ceateStuff(.......); //??

  private:
      B *b
}
void A::createStuff(argument1, argument2...)
{
    C = new C(argument1, argument2...) //You now have an instance of C with the arguments pass in to createStuff();

}

答案 2 :(得分:1)

C类变量属于B类;它调解了对C中数据的访问.B类有构造函数;您将使用它们按顺序设置B类变量,确保C正确管理是B的工作。

如果您需要更多地控制C,那么您就遇到了设计问题。你的A类需要它自己的C类变量来控制,或者B类不提供你需要和需要修复的工具,或者你误以为你需要访问变量的内容,从而直接控制变量的内容C级。

德米特定律是这种情景的指南;你似乎想要违反它。

答案 3 :(得分:0)

在任何情况下你都应该看看B类,它如何实现C对象的初始化,是否可以控制(如果不能 - 你应该扩展B类的接口并添加这个功能)?

如果A可以访问C定义,也许你可以用这样的方式使用B的构造函数:

void A::createStuff( const C& c)
{
    b = new B(c); 
}