小编Hyb*_*nky的帖子

C++使用指向非const的指针编写const向量

我正在编写一个CustomVector类,使用标准向量在内部存储数据:

template <class T>
class CustomVector {
  friend class CustomVector_ref<T>;

  public:
  ...

  private:
    std::vector<T> _data;
};
Run Code Online (Sandbox Code Playgroud)

然后,为了从CustomVector中提取子向量,我使用一个存储指向每个数据元素的指针的类:

template <class T>
class CustomVector_ref {
  public:
    //Returns the value stored in CustomVector 
    //and pointed-to by _data_ref
    T& operator[] (size_t id) { return *_data_ref[id] } 
    const T& operator[] const (size_t id) { return *_data_ref[id] } 
  ...
  private:
    std::vector<T*> _data_ref;
};
Run Code Online (Sandbox Code Playgroud)

现在,为了说明我的问题,考虑简单的构造函数构建对CustomVector的所有元素的引用就足够了

template<class T>
CustomVector_ref<T>::CustomVector_ref(CustomVector<T>& cv)
{
  for (T& el : cv._data)
    _data_ref.push_back(&el);
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但如果我有一个const CustomVector,我还需要定义构造函数:

template<class T>
CustomVector_ref<T>::CustomVector_ref(const CustomVector<T>& cv)
{
  for (const …
Run Code Online (Sandbox Code Playgroud)

c++ pointers const vector

10
推荐指数
1
解决办法
417
查看次数

标签 统计

c++ ×1

const ×1

pointers ×1

vector ×1