所以我有一个类,其中有一个 shared_ptr 声明如下
std :: shared_ptr< T > dyn_arr{ new T[ dyn_arr_max_size ], std :: default_delete< T[] >() };
这指向一些大小的动态数组。我还为它实现了一个迭代器。在这个迭代器内部有一个 ++ 重载运算符。现在当我得到
shared_ptr<T> ptr_iter= dyn_arr;
例如,它将适用于前一个或两个元素。之后,它不能正确迭代。我还注意到以下几点:
例如我的 ptr_iter 是地址 ABDC0 for ptr_iter.get() 在开始做之后
ptr_iter = std :: make_shared<T>( *(ptr.get() + 1 ) );
或者
ptr_iter = std :: make_shared<T>( ptr.get()[1] );
ptr_iter.get()
现在将指向其他地址,例如 SDBC,而不是指向 ABDC4 的整数。有人可以解释一下为什么会这样吗???
我需要能够以ptr_iter = make_shared( ptr_iter.get() + 1 );
某种方式做而不是ptr_iter = make_shared( *(ptr_iter.get() + 1) );