[英]Custom Vector class, return vector like an array in c++
我正在尝试创建一个自定义向量 class 并重载所有运算符。 考虑以下代码:
template <class T>
class vector{
private:
T * arrayOfObj;
// other class members
public:
Vector(){
arrayOfObj = new T[100];
}
vector(int size);
// other functions for vector class, overloaded [], =, etc.
}
在另一个 class 中,我需要返回向量但使用指针,就像我们返回数组时一样:
#include "B.h"
class c {
vector<B> vect;
public:
B * getArray(){
return vect;
}
首先,是否可以像数组一样重新运行向量? 另外,如果我想访问封装在向量 class 内的动态数组而不使用公共 function 返回数组,我的方法应该如何?
首先,是否可以像数组一样重新运行向量?
当然,这就是std::vector::data()
所做的。 就像做return arrayOfObj;
在任何方法或运算符重载中。
另外,如果我想访问封装在向量 class 内的动态数组而不使用公共 function 返回数组,我的方法应该如何?
不可能。 要么您允许通过公共 function 访问您的内部存储,要么您不允许这样做,您的选择。 在c::getArray()
中,您还可以将vect
的所有元素复制到一个新数组中 - 这样没有人会从外部更改vect
并且您不必提供对vector
class 内部存储的访问。
还有一种friend
元机制允许一个 function 或 class 访问另一个 class 的私有成员,但通常比公共访问更糟糕。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.