c++ - 自定义Vector类,像C++中的数组一样返回向量
问题描述
我正在尝试创建一个自定义向量类并重载所有运算符。考虑以下代码:
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.
}
在另一个类中,我需要返回向量但使用指针,就像我们返回数组时一样:
#include "B.h"
class c {
vector<B> vect;
public:
B * getArray(){
return vect;
}
首先,是否可以像数组一样重新运行向量?另外,如果我想访问封装在向量类中的动态数组而不使用公共函数来返回数组,我的方法应该是什么?
解决方案
首先,是否可以像数组一样重新运行向量?
当然,就是std::vector::data()
这样。它就像return arrayOfObj;
在任何方法或运算符重载中一样简单。
另外,如果我想访问封装在向量类中的动态数组而不使用公共函数来返回数组,我的方法应该是什么?
不可能。要么您允许通过公共功能访问您的内部存储,要么您不允许这样做,您的选择。c::getArray()
您还可以将 的所有元素复制到vect
一个新数组中 - 这样没有人会vect
从外部改变,您不必提供对vector
类内部存储的访问。
还有一种friend
机制允许一个函数或类访问另一个类的私有成员,但它通常比公共访问更糟糕。
推荐阅读
- node.js - 尝试安装 Yeomen 时收到警告
- python - 如何使用 Pandas 合并功能删除重复的列名
- reactjs - React.js 中的数组解构
- javascript - 你能解释一下这个for循环吗?
- python - 如何导航到硒的下一页?
- uvc - windows对UVC扩展单元命令的数量有限制吗
- javascript - 多个ajax返回和求和值
- python - ImportError: DLL load failed while importing QtWidgets: 操作成功完成
- reactjs - React-router 获取可选的查询参数
- java - 有没有办法从 Firestore 访问自动生成文档 ID?