我正在尝试编译这样的代码:
#includeusing 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
除了普通的getter之外,你还应该有一个const getter.
请注意以参考方式返回.这允许您对SetXX()的任何调用都会影响CCube内部的位置副本,而不会影响您一直在更新的副本.
class CCube { private: CPosition Position; public: CPosition& getPosition() { return Position; } CPosition const& getPosition() const { return Position; } };