1

我有三个类——专辑、曲目和扩展曲目的播放列表曲目。

Track 包含一个 Time 对象,以及艺术家和标题的两个字符串。Album 包含一个 Tracks 向量和一个标题字符串。PlaylistTrack 扩展了 Track,因为它包含一个指向它所属专辑的指针。

我的问题是,我怎样才能获得指向在 PlaylistTrack 类中包含它的专辑的指针?

4

2 回答 2

1

曲目属于给定的专辑,并且这种关系永远不会改变,因此最简单的解决方案是将包含专辑对象的指针传递给 Track 对象(或 PlaylistTrack,如果你喜欢这样的话)的构造函数,并保存它在构造函数代码中的指针成员中。

请注意,PlaylistTracks 可以引用包含它们的专辑对象,但不能通过调用delete成员指针来删除它。

于 2012-12-10T20:55:20.057 回答
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;
}
于 2012-12-10T20:58:44.207 回答