小编foo*_*foo的帖子

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;
};
Run Code Online (Sandbox Code Playgroud)

然后是一段这样的代码:

Foo foo;
for(int i = 0; i < (int) foo.V().size(); ++i)
    cout << foo.V().at(i) << endl;
Run Code Online (Sandbox Code Playgroud)

但是,后者引发了一个编译错误,说V()调用是一个受保护的方法,而我只是想从中读取,而不是修改它.

我尝试了以下(但没有成功).

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

非常感谢您的帮助.

=====

谢谢大家的解释和解决方案!非常感谢!

c++ overloading protected public

4
推荐指数
2
解决办法
658
查看次数

标签 统计

c++ ×1

overloading ×1

protected ×1

public ×1