我有三个类 - Album,Track和PlaylistTrack,它们扩展了Track。
Track包含一个Time对象,以及两个艺术家和标题字符串。 专辑包含一个Tracks矢量和一个标题字符串。 PlaylistTrack扩展了Track,它包含指向它所属的Album的指针。
我的问题是,如何在PlaylistTrack类中获取指向包含它的Album的指针?
答案 0 :(得分:1)
曲目属于给定的专辑,这种关系永远不会改变,所以最简单的解决方案是将包含Album对象的指针传递给Track对象的构造函数(或PlaylistTrack,如果你喜欢那样),并将其保存在构造函数的代码中的指针成员中。
请注意,PlaylistTracks可以引用包含它们的Album对象,但不能通过调用成员指针上的delete
来删除它。
答案 1 :(得分:1)
我并不完全明白你在问什么,但听起来你想要一个从PlaylistTrack获得专辑的方法。
class PlaylistTrack : public Track
{
public:
PlaylistTrack(Album * owner){ m_owner = owner; }
Album* getAlbum(){return m_owner;}
private:
Album* m_owner;
}
int main()
{
Album albumA;
PlaylistTrack newTrack(&albumA);
//Now the track knows what album it belongs to, but the album does not own the track yet.
std::cout << "New Track's Album: " << newTrack.getAlbum.getTitle() << std::endl;
//Now the album owns this track
albumA.addTrack(newTrack);
//The PlaylistTrack constructor could add itself to the album if you wanted to I think.
return 0;
}