【发布时间】:2015-01-09 08:49:24
【问题描述】:
我正在实现一个堆栈数据结构。当我在main函数中调用pop函数时,出现了错误。它的短语是这样的:
stack.h:13: error: invalid conversion from 'int' to 'const char*'stack.h:13: error: initializing argument 1 of 'int remove(const char*)
'
问题是我没有使用char 或char* 类型参数编写删除函数。
所以我希望你们中的任何人都可以帮助我离开这里。谢谢您的帮助!
template <typename T>
class Stack : public Vector<T> {
public:
Stack () { Vector<T>(); }
T pop() { return remove( this->size() - 1 ); } //stack.h:13
};
template <typename T>
class Vector {
protected:
int _size;
int _capacity;
T* _elem;
void shrink();
public:
T remove ( int r );
int remove ( int lo, int hi );
};
template <typename T>
int Vector<T>::remove ( int lo, int hi ) {
if(lo==hi) return 0;
while( hi < _size ) _elem[ lo++ ] = _elem[ hi++ ];
_size = lo;
shrink();
return hi-lo;
}
template <typename T>
T Vector<T>::remove ( int r ) {
T e = _elem[r];
remove ( r, r + 1 );
return e;
}
在主函数中,
Stack<int> S;
for(i = 0; i<n; i++) {
S.push(i+1);
}
S.pop();
【问题讨论】:
-
有时你不得不思考为什么人们发明了换行符。
-
stack.h的第 13 行是哪一行? -
发布的代码无法编译,没有定义向量。
-
@ST3 我已经修改了代码
标签: c++ data-structures