C++ Protected / Public overloads

后端 未结 4 1938
無奈伤痛
無奈伤痛 2021-01-19 05:28

I have a class like this :

class Foo
{
public:
    Foo()
    {
        for(int i = 0; i < 10; ++i)
            v.push_back(i);
    };
    const vector<         


        
4条回答
  •  清歌不尽
    2021-01-19 06:31

    Overload resolution does not take member accessibility into account, so an ideal overload candidate is chosen and then member accessibility is checked to see if the call is legal.

    The realistic workaround is:

    Foo foo;
    Foo const& foo_alias = foo;
    for (std::size_t i = 0; i != foo_alias.V().size(); ++i)
        cout << foo_alias.V().at(i) << endl;
    

提交回复
热议问题