我在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
是指针。因此使用:
myVector->push_back(2);
和
(*myVector)[0]
要么
std::vector<int> &foo = *myVector; foo[0];
关于c++ - 堆中的对象和覆盖索引运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28418396/