我有三个类——专辑、曲目和扩展曲目的播放列表曲目。
Track 包含一个 Time 对象,以及艺术家和标题的两个字符串。Album 包含一个 Tracks 向量和一个标题字符串。PlaylistTrack 扩展了 Track,因为它包含一个指向它所属专辑的指针。
我的问题是,我怎样才能获得指向在 PlaylistTrack 类中包含它的专辑的指针?
我有三个类——专辑、曲目和扩展曲目的播放列表曲目。
Track 包含一个 Time 对象,以及艺术家和标题的两个字符串。Album 包含一个 Tracks 向量和一个标题字符串。PlaylistTrack 扩展了 Track,因为它包含一个指向它所属专辑的指针。
我的问题是,我怎样才能获得指向在 PlaylistTrack 类中包含它的专辑的指针?
曲目属于给定的专辑,并且这种关系永远不会改变,因此最简单的解决方案是将包含专辑对象的指针传递给 Track 对象(或 PlaylistTrack,如果你喜欢这样的话)的构造函数,并保存它在构造函数代码中的指针成员中。
请注意,PlaylistTracks 可以引用包含它们的专辑对象,但不能通过调用delete
成员指针来删除它。
我不太明白你在问什么,但听起来你想有一种方法从 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;
}