У меня есть такой класс:
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;
};
А потом такой фрагмент кода:
Foo foo;
for(int i = 0; i < (int) foo.V().size(); ++i)
cout << foo.V().at(i) << endl;
Тем не менее, последний вызывает ошибку компиляции, говоря, что вызов V()
является защищенным методом, в то время как я просто пытаюсь читать из него, а не изменять его.
Я попробовал следующее (но безуспешно).
Foo foo;
const vector<double>& test = foo.V();
for(int i = 0; i < (int) test.size(); ++i)
cout << test.at(i) << endl;
Большое спасибо за вашу помощь.
=====
Спасибо всем за объяснения и решения! Это очень ценится!