假设我有一个成员对象的类:
class Class1
{
private:
Class2 anObject;
}
一个整数变量和另一个类中的访问器:
class Class2
{
private:
int aVariable;
public:
int getAVariable()
{
return aVariable;
}
}
从main访问aVariable
的最佳方法是什么?
例如,如果anObject
被声明为公共而非私有,我可以在main中执行此操作:
int main()
{
Class1 Class1Object;
cout << Class1Object.anObject.getAVariable() << '\n';
}
但如果anObject
保密,我该如何做?
答案 0 :(得分:3)
获取第1课中所需对象的公共getter。
public:
Class2 getObject()
{
return anObject;
}
然后你可以做
int main()
{
Class1 Class1Object;
cout << Class1Object.getObject().getAVariable() << '\n';
}
答案 1 :(得分:1)
在这种情况下,您可以在Class1上定义一个访问器(get函数),它只返回在Class2上调用getAVariable()的结果。
答案 2 :(得分:0)
您有两种选择:
class Class1
{
public:
int getAVariable() //Option 1, Get the int directly
{
return anObject.getAVariable()
}
Class2 getAnObject() //Option 2, Get a copy of the object
{
return anObject
}
private:
Class2 anObject;
}
选项1:是AboutAverage建议的。但是,如果您在Class2
中有多个私人成员,那么您需要Class1
选项2:aafonso1991刚刚打败了我。它会返回anObject
的副本,因此anObject
中的Class1
仍然未被修改。这是更好的OO选择,因为您不需要创建额外的功能并保存这些代码行。它可能是运行时的问题,但如果Class2特别大并且复制它很昂贵。在这种情况下,您可以为Class1