访问由对象A创建的对象B中的对象C的方法

时间:2017-01-09 17:11:29

标签: c++ object

我认为这个问题非常基础,而且肯定在某处有同样的问题,但我找不到。

所以这就是问题所在。 Top可以访问MyCircle并调用SetSize函数。但MyCircle无法访问MyRect。

如果我在MyCircle的构造函数中提供指向MyRect的指针,我可以访问MyRect,但我认为应该有另一种方式。也许我完全错了:(感谢您的帮助。

中的

class Top{
   public:
      Rect   myRect;
      Circle myCircle;
      void Run();
};

class Rect{
   public:
      int size;
};

class Circle{
   public:
      int size;
      void SetSize(int buffer);
};

void Circle::SetSize(int buffer){
    myRect.Size = buffer;
}

void Top:Run(){
    myCircle.SetSize(10);
}

1 个答案:

答案 0 :(得分:0)

不要将矩形传递给圆圈类,圆圈应该不知道矩形(反之亦然)。

而是使用圆圈和矩形在Top中创建一个函数并对其进行操作。 我不确切地知道你想做什么,但是假设你想要平均设置尺寸。比制作​​例如Top中的SetSize方法设置圆和矩形的大小:

e.g。

 class Top{
    public:
       Rect   myRect;
       Circle myCircle;
       void Run();

       void SetSize(int size)           
 }

 where SetSize is implemented as:

       myRect.SetSize(size);
       myCircle.size = size;

将代码处理多个派生对象的代码放在基类而不是其中一个子代中总是更好。如果基类中存在太多(或不相关)的功能,请创建一个不同的类(如SizeHandler)。

不过,最好不要使用公共属性,但总是获取/设置方法。