C ++,成员函数返回const引用,包含指向const对象的指针

时间:2013-04-27 17:52:20

标签: c++ pointers vector return const

我有一个类,其中包含指向对象的成员向量。现在我想要一个访问器方法来返回对该向量的const引用。我还希望调用方法无法编辑向量指针指向的对象,即指针应指向const对象。这是我错误的代码:

class Foo
{
private:
    vector<Foo*> myFoos;
public:
    const vector<const Foo*> &getMyFoos(void)
    {
        return myFoos; //Doesn't work since vector<Foo*> cannot be cast to vector<const Foo*>
    }
}

我已经看到类似问题的答案,其中解决方案是制作副本myFoos的副本,其中副本的类型正确。无论如何都可以在不制作副本的情况下执行此操作,因为myFoos矢量可能非常大?

1 个答案:

答案 0 :(得分:0)

只需将operator[] const添加到Foo班级:

const Foo& operator[] (size_t i) const {
    // you may add some range checking here
    return *myFoos[i];
}