C++ Return 对非复制对象向量的引用

C++ Return reference to vector of non-copy objects

我有 class A 禁用了复制语义,class B 包含 A 的向量。如何编写 B 的成员函数 returns 引用 A 的向量?

对于那些了解 Rust 的人,这里是我正在尝试做的事情(用 Rust 语言表达):

struct A {/* ... */}

struct B {
    data: Vec<A>,
}

impl B {
    pub fn data(&self) -> &Vec<A> {
        &self.data
    }
}

正如@molbdnilo 所说,我的错误是我使用了 auto data = b.data(); 而不是 auto& data = b.data();。因此,以下示例正在运行,并展示了如何执行我所要求的操作:

#include<vector>
class A
{
public:
    A(const A&) = delete;
    A(A&&) = default;
    A& operator=(const A&) = delete;
    A& operator=(A&&) = default;
private:
    /* some data */
};

class B
{
public:
    B(): m_data {} {}
    const std::vector<A>& data() const {
        return this->m_data;
    }
private:
    std::vector<A> m_data;
};

int main()
{
    auto b = B();
    auto& data = b.data();
}