请考虑以下示例:
#include <vector>
using namespace std;
class Table: protected vector<int>
{
public:
iterator begin();
iterator end();
}
所有向量的方法都是私有的或受保护的,但公共的begin()
和end()
除外。我可以从Table
类的外部调用这两个方法。但是我无法将它们的返回值分配给变量,因为它们的类型受到保护。
Table t;
t.begin();
Table::iterator iter = t.begin(); // this will fail.
如何公开Table::iterator
?
答案 0 :(得分:6)
您可以使用使用声明来挑选并选择要在班级中公开的std::vector
部分:
class Table: protected vector<int>
{
public:
using std::vector<int>::iterator;
....
iterator begin();
iterator end();
};
如果您只想使用std::vector
的{{1}}和begin
成员,则可以说
end
请注意,这会使using std::vector<int>::begin;
using std::vector<int>::end;
和非const
重载都公开。