我有這樣一個類:C++保護/公共重載
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;
非常感謝您的幫助。
=====
謝謝大家的解釋和解決方案!非常感謝!
如果你給一個'protected'引用賦予'private'變量,這有什麼意義? (我個人認爲這個邪惡)。 – 2011-05-26 07:45:28