C++ 是否允许/常用一个getter来获取一个;“嵌入式”;变量还是对象?

C++ 是否允许/常用一个getter来获取一个;“嵌入式”;变量还是对象?,c++,arrays,qt,vector,getter,C++,Arrays,Qt,Vector,Getter,有件事我一直在想,我希望你们能分享你们对这件事的想法。大约半年前,当我为一个由PLC控制的机器人编程时,我第一次发现了这个问题。在结构化文本中,我使用get函数从类返回对象。通过这种方式,我可以对该类的成员/变量做任何我想做的事情(使用getter和setter)。这为我节省了大量的工作,因为我不必使用单独的函数来从更深的物体中获取一些东西 目前我在QTC++中编程,但我又面临这个问题。我不确定我现在是否完全清楚(我不是以英语为母语的人,也不是很擅长编写术语),所以我将尝试用一个例子来说明。 假

有件事我一直在想,我希望你们能分享你们对这件事的想法。大约半年前,当我为一个由PLC控制的机器人编程时,我第一次发现了这个问题。在结构化文本中,我使用get函数从类返回对象。通过这种方式,我可以对该类的成员/变量做任何我想做的事情(使用getter和setter)。这为我节省了大量的工作,因为我不必使用单独的函数来从更深的物体中获取一些东西

目前我在QTC++中编程,但我又面临这个问题。我不确定我现在是否完全清楚(我不是以英语为母语的人,也不是很擅长编写术语),所以我将尝试用一个例子来说明。 假设我有一个数组/向量,里面有多个对象。每个对象都有自己的类数组(我指的是有学生的类,而不是编程类),每个类都有自己的学生数组,当然还有名字、学生id、年龄等等

现在我想随便问一个学生的名字。在QtC++中,我会做这样的事情:< /P>
QString randomName = schoolVector.at(randomNumber)->getClassVector().at(anotherRandomNumber)->getStudentVector().at(yetAgainARandomNumber)->getName();
您可以看到,我制作了一些get函数来返回某个类中的对象。通过这种方式,我可以轻松地操作类中的对象或变量。 这就是我问这个问题的原因:这是我们要走的路吗?在学校里,他们教我使用getter和setter是很重要的,这样你就不能在你不想或者你不想让别人去操作变量的时候去操作它。但是当我使用getter返回类向量中的类时,我仍然可以操作其中的任何内容

有谁能告诉我常见的做法,以及使用for循环来查找向量中的某个对象是否正常?我会非常感激的

干杯,
Martijn

如果我理解,您希望能够以保留封装的方式访问(读取)对象。您可以通过定义一个getter来实现这一点,该getter返回对内部对象的常量引用,例如:

const std::vector<Class>& getClassVector() const { return class_vector; }
const std::vector&getClassVector()const{return class_vector;}
现在您确实可以访问底层对象,而不需要修改它


顺便说一句,这可能是分裂头发,你知道的,但setter/getter的实现并不是完全正确的,这样人们就不能在你不想修改的时候修改底层变量-setter可以随时调用并修改变量,你无法阻止这一点。它们的存在使得任何修改都可以以可控的方式执行(例如,通过检查即将设置的值是否在您期望的范围内,并在不在范围内时处理该情况,或者通过根据您正在设置的值重新计算一些其他变量,切换对象的状态,防止可能的数据争用等).

您可能想读一读:感谢您发送该链接!这看起来确实很像我问的问题。所以,如果我理解正确的话,不是每个人对这个问题的看法都是一样的吗?但是,当人们使用getter和setter时,他们是如何进行这种思考的呢?通常情况下,它看起来就像你所拥有的一样。实际上,我认为你应该做的是在你的
学校中有一个单独的
学生名单
,里面有所有注册的学生,然后你可以从名单中随机挑选一个学生。这不是有点像我的studentVector吗?有点,但它不是住在班级里,而是住在学校里。