[英]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.