关于类的一般编程问题

时间:2013-07-23 09:13:20

标签: algorithm class language-agnostic

假设我想创建一个电影数据库软件。

我需要一个具有name,surname,dob,awards等属性的类Actor,它还应该有一个“movie”对象数组。

我还需要类Movie,它将属性作为标题,持续时间,年份,但它也应该有一个“actor”对象的数组。代表电影的演员。

Actor对象需要一个由该actor完成的所有电影的列表,就像电影对象需要一个在其中播放的所有演员的列表一样。 因为它是一个包含另一个的副本,反之亦然,编译器会被卡住。

which would be the right way to represent this situation? 

2 个答案:

答案 0 :(得分:1)

您可以在课程Actor*中使用Movie,在课程Movie*中使用Actor。并转发类的声明:

class Actor;

public class Movie { ... Actor* ... }

这在标题中。 在类实现.cpp中,您可以包含另一个类的头,并使用另一个类的方法。

答案 1 :(得分:0)

在大多数语言中,概念是相同的。正如您所观察到的,您不能在Actors中嵌入“Movie对象列表”,反之亦然,因此请保留每个列表,并以某种方式“引用”其他对象。这可能是使用一些唯一的引用值(例如递增的数字),可用于搜索其他列表或关联容器(例如,在C ++中使用键/值“std :: map”而不是链接列表),或者将引用或(弱)指针直接保持在逻辑链接的对象中....