我是一名c ++新手,我目前无法从两个非常遥远的班级中检索数据。这是层次结构:
class Sports包含运动对象列表。 一个运动对象包含一个带有分区对象的分区列表,分区对象包含一个名为teams的数组,指针指向团队对象。
*此上下文中的列表是我的老师已经制作并且必须使用的外部类(链接列表),这些类中没有一个是相互派生的。
我需要从团队类中访问Sports类的数据成员,因为它们很远,我不知道如何做到这一点。任何建议都非常感谢。
答案 0 :(得分:2)
好吧,我可以有三种可能的解决方案:
1)你可以公开你的团队领域 2)为所需字段创建getter / inspector方法 3)或使用朋友。 http://en.cppreference.com/w/cpp/language/friend
您认为哪一个最好取决于您
答案 1 :(得分:1)
所以,从概念上讲,你有类似以下的内容
x->[sport0][sport1]...
|
+-> [division0][division1]...
|
+->[team0][team1]...
您需要澄清一些事项:一个团队可以分多个部门吗?多项运动可以有相同的划分吗?
通常在这种情况下你几乎没有可能。从团队中,您可以从x
(如果可用)遍历整个树结构,并记住您在路上遇到的运动和分区。当你找到你的团队时你会停下来。
另一种常见的方法是创建从团队到分部以及从分部到体育的向后指针。这样您就可以非常快速地获得所需的信息。
x->[sport0][sport1]...
| ^----+----------+---
| | |
+-> [division0][division1]...
| ^-+------+----
| | |
+->[team0][team1]...
您可以在创建列表时创建后向指针,也可以在执行完全遍历时创建后向指针。
你也可以提出其他方法。