【问题标题】:Object in heap and overriding index operator堆中的对象和覆盖索引运算符
【发布时间】:2015-04-09 16:50:27
【问题描述】:

我在 Vector 类中重写了 index([]) 运算符。当我使用堆栈初始化时:

Vector<int> myVector;
myVector.push_back(2);
cout<<myVector[0];

在这个例子中一切正常,但是如果我在堆中初始化 Vector:

Vector<int>* myVector = new Vector<int>();
myVector->push_back(2);
cout<<myVector[0];

我得到错误。这是我的方法代码:

template<class T>
T Vector<T>::operator[](int index) const{
    return array[index];
}

是否有任何解决方案可以避免编译错误并获得工作代码?

【问题讨论】:

  • myvector 是一个指针,而不是一个对象。您不能将其与运算符一起使用。当然也没有理由在这里使用指针……

标签: c++ object overriding heap-memory


【解决方案1】:

myVector 是指针。所以使用:

myVector->push_back(2);

(*myVector)[0]

std::vector<int> &foo = *myVector; foo[0];

【讨论】:

  • 对不起,我在这里写代码时出错了。我在我的代码中使用“->”指针。
  • 问题不是push_back,而是myVector[0]
  • myVector-&gt;operator[](0);
  • std::vector&lt;int&gt; &amp;foo = *myVector; foo[0]; ?
猜你喜欢
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
  • 2014-04-20
相关资源
最近更新 更多