通过调用对象获取对象数据

时间:2017-07-26 22:09:04

标签: c++ class

所以我自己制作了一个数组课:

#include <algorithm>

template <class T>
class myArray
{
private:
    int length;
    T *elements;
public:
    myArray()
    {
        this->length = 0;
        this->elements = nullptr;
    }

    myArray(int len)
    {
        this->length = len;
        this->elements = new T[len];
    }

    myArray(int* data, int len)
    {
        this->length = len;
        this->elements = new T[len];
        std::copy(data, data+len, this->elements);
    }

    ~myArray()
    {
        delete[] this->elements;
    }
};

我认为现在它有效。我想检查我在第3个构造函数中传递的元素是否被正确复制,所以我写了这个:

int data[] = {1,2,3,4,5};
myArray<int> a (data, 5);
for (auto x: myArray)
{
    std::cout << x << '\n';
}

问题是我必须在课堂上写一下,当我打电话给myArray时,让它返回this-&gt;元素。我知道这可能是微不足道的,但我不知道如何找到它,实际上如何调用它,让Google为我找到答案。

1 个答案:

答案 0 :(得分:4)

您需要为您的类实现beginend成员函数(或者作为与您的类在同一名称空间中的全局函数),它返回指向第一个元素的迭代器,以及一个超过数组的最后一个元素。由于您的类由连续数组支持,因此您不需要实现迭代器类,只需使用指针。

// these are member functions, as they would be defined inside your class
T* begin() {
    return elements;
}

T* end() {
    return elements + length;
}

您还应该实现const版本。

T const* begin() const {
    return elements;
}

T const* end() const {
    return elements + length;
}