首页 > 解决方案 > 自定义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;
     }

首先,是否可以像数组一样重新运行向量?另外,如果我想访问封装在向量类中的动态数组而不使用公共函数来返回数组,我的方法应该是什么?

标签: c++arrayspointerstemplatesvector

解决方案


首先,是否可以像数组一样重新运行向量?

当然,就是std::vector::data()这样。它就像return arrayOfObj;在任何方法或运算符重载中一样简单。

另外,如果我想访问封装在向量类中的动态数组而不使用公共函数来返回数组,我的方法应该是什么?

不可能。要么您允许通过公共功能访问您的内部存储,要么您不允许这样做,您的选择。c::getArray()您还可以将 的所有元素复制到vect一个新数组中 - 这样没有人会vect从外部改变,您不必提供对vector类内部存储的访问。

还有一种friend机制允许一个函数或类访问另一个类的私有成员,但它通常比公共访问更糟糕


推荐阅读