C++ 如何获取对包含对象的引用
C++ How To Get Reference To Containing Object?
我有三个类 - 专辑、曲目和播放列表跟踪,可扩展跟踪。
Track 包含一个 Time 对象,以及用于艺术家和标题的两个字符串。专辑包含曲目矢量和标题字符串。PlaylistTrack 扩展了 Track,因为它包含一个指向它所属的专辑的指针。
我的问题是,我怎样才能获得指向在类 PlaylistTrack 中包含它的专辑的指针?
我真的不明白你在问什么,但听起来你想有一种办法从 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;
}
曲目属于给定的专辑,并且这种关系永远不会改变,因此最简单的解决方案是将包含 Album 对象的指针传递给 Track 对象的构造函数(或 PlaylistTrack,如果您喜欢这样),并将其保存在构造函数代码中的指针成员中。
请注意,播放列表曲目可以引用包含它们的 Album 对象,但不得通过在成员指针上调用 delete
来删除它。
相关文章:
- 是否需要删除包含对象的"pair"?
- 如何在h文件中包含.o对象文件
- 指针数据类型变量如何包含对象?
- C++ 矢量不显示包含对象的数据
- 唯一 ptr 将所有权移动到包含对象的方法
- 通过引用返回包含对象的向量
- 仅在删除包含对象的向量时调用自定义»析构函数«
- QML中包含对象的QABSTRACTLISTMODEL的缺点
- std::list::merge() 对于包含对象的列表失败
- 从 std::aligned_union_t 获取指向包含对象的指针
- 通过QLIST迭代并在包含对象上调用函数
- 检查子对象的地址是否在包含对象的边界内是否合法
- std::vector 调用在重新分配时无论如何都包含对象的析构函数?
- C++ 如何获取对包含对象的引用
- 从包含对象指针的列表中删除
- 对于数据成员,如果包含对象已在动态内存中,则动态分配此变量(或不动态分配)之间是否有任何区别
- C++标准库容器相对于所包含对象的线程安全性
- 包含对象的结构的向量
- 包含对象的 C++ 结构
- 正在计算包含对象的此指针