gpt4 book ai didi

c++ - 在 C++ 中存储指向 vector 的指针的类

转载 作者:行者123 更新时间:2023-11-28 03:30:32 25 4
gpt4 key购买 nike

我正在实现一个 Aviary 类,它可以存储指向 Bird 对象的指针。现在,我有以下内容:

class Aviary {

public:
const Bird &operator[](const size_t index) const {
return birds[index];
}

Bird &operator[](const size_t index) {
return birds[index];
}

private:
std::vector<Bird*> birds;

Bird 对象存储为指针以避免对象切片。但是,运算符 [] 实现存在问题(对类型“const Bird”的引用无法绑定(bind)到“const value_type”(又名“Bird *const”)的左值)。

如何正确实现 operator[]?

最佳答案

既然你存储了指针,你应该取消引用返回引用的指针。

const Bird &operator[](const size_t index) const {
return *birds[index];
}

Bird &operator[](const size_t index) {
return *birds[index];
}

旁注:使用智能指针,而不是原始指针。

关于c++ - 在 C++ 中存储指向 vector 的指针的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12724735/

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