当前位置:  开发笔记 > 编程语言 > 正文

c ++类朋友

如何解决《c++类朋友》经验,为你挑选了1个好方法。

我正在尝试编译这样的代码:

#include 
using namespace std;

class CPosition
{
  private:
    int itsX,itsY;
  public:
    void Show();
    void Set(int,int);
};

void CPosition::Set(int a, int b)
{
  itsX=a;
  itsY=b;
}

void CPosition::Show()
{
    cout << "x:" << itsX << " y:" << itsY << endl;
}

class CCube
{
  friend class CPosition;
  private:
         CPosition Position;
};

main()
{
  CCube cube1;

  cube1.Position.Show();
  cube1.Position.Set(2,3);
  cube1.Position.Show();
}

但是在函数main()中无法访问'CCube :: Position'3次.我希望在CPube之外声明类CPosition,以便将来可以在新类中使用它,例如CBall :)但是如何在不使用继承的情况下使其工作.可能吗 :)?

问候,PK



1> Martin York..:

除了普通的getter之外,你还应该有一个const getter.
请注意以参考方式返回.这允许您对SetXX()的任何调用都会影响CCube内部的位置副本,而不会影响您一直在更新的副本.

class CCube
{
    private:
        CPosition Position;
    public:
        CPosition&       getPosition()       { return Position; }
        CPosition const& getPosition() const { return Position; }
};

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有