我开始编写更大的对象,其中包含其他对象。有时,我需要能够从包含它的对象的类外部调用子对象的方法,例如从 main() 函数。
到目前为止,我正在使用我所学到的 getter 和 setter。这将给出类似于以下代码的内容:
class Object {
public:
bool Object::SetSubMode(int mode);
int Object::GetSubMode();
private:
SubObject subObject;
};
class SubObject {
public:
bool SubObject::SetMode(int mode);
int SubObject::GetMode();
private:
int m_mode(0);
};
bool Object::SetSubMode(int mode) { return subObject.SetMode(mode); }
int Object::GetSubMode() { return subObject.GetMode(); }
bool SubObject::SetMode(int mode) { m_mode = mode; return true; }
int SubObject::GetMode() { return m_mode; }
这感觉非常不理想,迫使我为需要从外部访问的每个方法编写(丑陋的)代码。我希望能够做一些简单的事情Object->SubObject->Method(param);
我想到了一个简单的解决方案:将子对象作为公共对象放在我的对象中。这样我应该能够简单地从外部访问它的方法。问题是,当我学习面向对象编程时,有人告诉我,除了方法之外,公开任何东西都是亵渎神灵,我不想开始养成不良的编码习惯。我在研究过程中遇到的另一个解决方案是添加一个指向子对象的公共指针?
如何以简洁的方式访问子对象的方法?
将对象作为公共对象放入类中以访问其方法是否允许/一种好习惯?否则怎么办?
非常感谢您在这方面的帮助。