我有一个简单的问题。我有一个说 A 的类,它有一个私有(private)成员,它是一个 STL 容器,例如一个整数 vector 。有没有办法使用它的方法(例如大小、调整大小等...)?经典的“get 函数”是否足够?
Class A
{
private:
std::vector<int> v;
public:
std::vector<int> get_v() {return v;};
};
如果是,“获取函数”不是只获取成员而不修改成员吗?
非常感谢
最佳答案
这里通常要做的是返回数据成员的常量引用:
const std::vector<int>& get_v() const
{
return v;
}
请注意,我还使函数保持不变。这告诉您该函数不会修改类中的任何数据成员。
目前,您正在获取 vector 的深层拷贝,这在性能方面代价高昂,并且还会使您脱离原始数据。
如果你想调用像 resize
这样的方法(改变 vector )那么你也可以提供一个非常量版本的函数(在 const
上重载)是在 C++ 中允许):
std::vector<int>& get_v()
{
return v;
}
如果您有一个指向A
实例的const
指针(或引用),编译器将调用const
版本。否则 if 将调用非 const
版本。
关于c++ - 当容器作为私有(private)成员在类中时如何访问容器方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21607597/