是否可以通过foo
实现一个函数来访问类中的私有数据向量class[i][j]
?这应该调用向量foo[i][j]
的内部函数。
答案 0 :(得分:4)
一个简单的解决方案是实施operator[]
,因此它只“剥离”第一维:
#include <cstdlib>
class MyClass
{
std::vector<std::vector<int> > foo;
public:
// grant write access
std::vector<int>& operator[](size_t index)
{
return foo[index];
}
// grant read access
const std::vector<int>& operator[](size_t index) const
{
return foo[index];
}
};
由于two overloads,您需要const correctness。 (如果您只想授予读访问权限,而不是写访问权限,那么当然不需要非const版本。)
答案 1 :(得分:2)
您可以重载operator[]
来执行此操作。您可能需要查看this faq以获取有关使用operator()
的建议。