C++ C++;如何获取对包含对象的引用?
我有三个类-专辑、曲目和扩展曲目的播放曲目 轨迹包含一个时间对象,以及艺术家和标题的两个字符串。 唱片集包含曲目向量和标题字符串。 PlayTrack扩展了曲目,因为它包含指向它所属的唱片集的指针C++ C++;如何获取对包含对象的引用?,c++,pointers,inheritance,C++,Pointers,Inheritance,我有三个类-专辑、曲目和扩展曲目的播放曲目 轨迹包含一个时间对象,以及艺术家和标题的两个字符串。 唱片集包含曲目向量和标题字符串。 PlayTrack扩展了曲目,因为它包含指向它所属的唱片集的指针 我的问题是,如何获取指向类playlitrack中包含它的唱片集的指针?曲目属于给定的唱片集,并且这种关系永远不会改变,因此最简单的解决方案是将包含唱片集对象的指针传递给曲目对象(或者playlitrack,如果您喜欢的话)的构造函数,并将其保存在构造函数代码中的指针成员中 请注意,playlitra
我的问题是,如何获取指向类playlitrack中包含它的唱片集的指针?曲目属于给定的唱片集,并且这种关系永远不会改变,因此最简单的解决方案是将包含唱片集对象的指针传递给曲目对象(或者playlitrack,如果您喜欢的话)的构造函数,并将其保存在构造函数代码中的指针成员中
请注意,playlitracks可以引用包含它们的相册对象,但不能通过在成员指针上调用
delete
来删除它。我不太明白您的确切要求,但听起来您想从playlitrack中获取相册
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;
}
班级播放曲目:公共曲目
{
公众:
播放曲目(唱片集*所有者){m_所有者=所有者;}
Album*getAlbum(){返回m_所有者;}
私人:
专辑*m_所有者;
}
int main()
{
相册;
播放曲目和唱片集;
//现在,该曲目知道它属于哪个专辑,但该专辑尚未拥有该曲目。
std::你是说这个指针吗?如果你在类层次结构中发布一些代码,这会更容易。你说playlitrack扩展了Track,并且Track有一个指向相册的poiner。因此playlitrack将自动包含该指针,并且根据你的访问说明符,它也可以在playlitrack中访问。不是playlis吗不仅仅是“包含指向它所属的专辑的指针”?谢谢,你已经理解了我的问题。很难正确地提出这个问题,因为我不知道我想要理解的内容的正确术语。我感谢你的回答。