我在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/

10-12 21:43