gpt4 book ai didi

c++ - 我可以从包含一个类的多个对象的列表中得到一些东西吗?

转载 作者:行者123 更新时间:2023-11-28 03:20:45 26 4
gpt4 key购买 nike

我有:

class Library
{
private:
list<Publication> L;
}
class Publication
{
protected:
string title;
string editor;
}

class Book:public Publication
{
private:
vector<string> Author;
}

当我在我的列表中插入一本书时,我丢失了作者?如果不是,当我想显示列表中的出版物之一时,我还想显示出版物的作者。如何在不修改列表结构的情况下做到这一点?

最佳答案

如果不更改 L 的类型,您将无法做到这一点.这是一个list<Publication> - 它存储Publication s,不是 Book秒。如果你推 Book放入其中,它将被切成薄片,只剩下 Publication部分。

如果要存储Publication s 多态性,您将需要使用指针或引用。我建议使用以下之一:

// When the Library has sole-ownership of a dynamically allocated Publication:
std::list<std::unique_ptr<Publication>> L;
// When the Library has shared-ownership of a dynamically allocated Publication:
std::list<std::shared_ptr<Publication>> L;
// When the Library wants a reference to a Publication:
std::list<std::reference_wrapper<Publication>> L;

如果出于任何原因您不能使用其中任何一个,您当然可以将原始指针存储在 L 中.

关于c++ - 我可以从包含一个类的多个对象的列表中得到一些东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15505869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com