gpt4 book ai didi

c++ - C++ 指针的新手;试图从指向父类的指针 vector 中检索子对象。帮助将不胜感激

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

因此,我正在尝试创建一个实体管理系统,其中一个容器可以访问许多不同类型的对象。我遇到了一些困难,非常感谢 Stack Overflow 社区可以提供的任何帮助。提前干杯。

int main() {
std::vector<std::unique_ptr<Prop>> x;
Prop y;
Actor z; // has actor-only "xyz" property (string);
x.emplace_back(y); // 0
x.emplace_back(z); // 1
std::cout << (Actor)x[1].get()->xyz;
return 0;
}

最佳答案

如果您正在使用 C++17 并且目前速度不是主要关注点,您可以查看 std::variant .这是一个几乎可以容纳任何类型的 union ,只要它满足它的要求。

在上面的示例中,您并没有过多地处理指针。注意术语,虽然 unique_ptr 包含单词 ptr,但在经典意义上,读者可能认为您在谈论原始指针unique_ptr 是一个智能指针,它自己拥有和管理对象。

MVCE: https://gcc.godbolt.org/z/-zUUbK

#include <vector>
#include <variant>

class Foo {};
class Bar {};

using FooBarVector = std::vector<std::variant<Foo, Bar>>;

int main()
{
FooBarVector objects = {Foo(), Bar()};
return 0;
}

关于c++ - C++ 指针的新手;试图从指向父类的指针 vector 中检索子对象。帮助将不胜感激,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57985098/

26 4 0
文章推荐: C++ LibcURL IMAP 获取主题行的变量是什么?
文章推荐: c++ - 使用带有 PIR 传感器的毫秒检测连续运动
文章推荐: c++ - 依赖注入(inject) : Dependency needs field/member
文章推荐: jquery - 使用 CSS 设置 以占用 的整个宽度