只需调用对象即可获取对象数据
Getting object data by just calling a object
所以我确实有一个自己做的数组类:
#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;
}
};
我认为目前它有效。我想检查我在第三个构造函数中传递的元素是否被正确复制,所以我写了这个:
int data[] = {1,2,3,4,5};
myArray<int> a (data, 5);
for (auto x: myArray)
{
std::cout << x << 'n';
}
问题是我必须在类中写什么,以使其返回这个>元素,当我只是调用myArray
时。我知道这可能是微不足道的,但我不知道如何找到它,实际上如何称呼它,让谷歌为我找到答案。
您需要为类实现begin
和end
成员函数(或作为与类位于同一命名空间中的全局函数(,这些函数返回指向第一个元素的迭代器,以及指向数组最后一个元素的迭代器。由于您的类由连续数组支持,因此您不需要实现迭代器类,只需使用指针即可。
// 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;
}
相关文章:
- 如何在C++中获取该对象的类声明中对象的地址?
- 如何在新的派生对象中获取基本对象的数据?
- 数组中不同类型的对象并获取每个对象的类型
- Visual Studio 2017 C++,不能使用 typeid() 获取信息对象,缺少指针?;
- 从两个 4x64 位整数数组中获取取模
- 如何从参数包获取指向对象的指针
- 在DelphiInterface上实现Dynamic_cast以获取基础对象类的任何方法
- 在<Object>基于范围的 for 循环中从 std::vector 获取指向对象的指针
- boost::可选 - 对对象使用 boost::in_place,构造器通过引用获取其他对象
- 如何使用 API 获取 QML 对象的 id 属性C++
- 如何从指针到方法获取类(对象类型)
- 在 C/C++ 中获取 Java 对象的内存地址
- 在ClrProfiler中,如何从ObjectID中获取托管对象
- 从操作员内部获取有关对象的RTTI信息
- 使用C 获取Java对象来调用Java方法
- 我们可以从设备句柄中获取设备对象详细信息 /名称吗?
- 从qgraphicsitem qt C 获取实际对象
- 如何获取成员对象以通知其容器对象
- 如何从静态对象中获取该对象的值
- 如何获取 COM 对象的成员函数的地址?