3

我有一个带有指向对象的指针的成员向量的类。现在我想要一个访问器方法来返回对该向量的 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 向量可能非常大,是否有办法在不复制的情况下执行此操作?

4

1 回答 1

0

只需添加operator[] const到您的Foo课程中:

const Foo& operator[] (size_t i) const {
    // you may add some range checking here
    return *myFoos[i];
}
于 2013-08-21T08:50:19.150 回答