C ++ Protegido / Sobrecargas públicas

Tengo una clase como esta:

class Foo
{
public:
    Foo()
    {
        for(int i = 0; i < 10; ++i)
            v.push_back(i);
    };
    const vector<double>& V() const {return v;};
protected:
    vector<double>& V() {return v;};
private:
    vector<double> v;
};

Y luego un fragmento de código como este:

Foo foo;
for(int i = 0; i < (int) foo.V().size(); ++i)
    cout << foo.V().at(i) << endl;

in embargo, este último genera un error de compilación diciendo que elV() call es un método protegido mientras intento leerlo, no modificarlo.

He intentado lo siguiente (pero sin éxito).

Foo foo;
const vector<double>& test = foo.V();
for(int i = 0; i < (int) test.size(); ++i)
    cout << test.at(i) << endl;

Muchas gracias por su ayuda

=====

Gracias a todos por las explicaciones y soluciones! ¡Es muy apreciado!

Respuestas a la pregunta(4)

Su respuesta a la pregunta