【发布时间】:2011-09-02 08:51:34
【问题描述】:
我有这样的课:
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变量的意义何在? (我个人认为这是邪恶的)。
标签: c++ overloading public protected