c++下标运算符重载出错


#include<iostream>
template<typename T>
class MyStack
{
public:	
MyStack(int size = 0);	
~MyStack();	
bool isEmpty();				//判空	
bool isFull();				//判满	
int StackLength();			//栈当前长度	
bool push(T  elem);		//入栈	
bool pop(T & elem);		//出栈	v
oid StackTraverse(bool topdown)const;	//遍历	
const T &  operator[](int k) const ;	
T & operator[](int k);

private:	
T *p_mbuffer;	//申请栈空间	
int m_size;		//栈大小	
int m_top;		//栈顶};
template<typename T>
const T & MyStack<T>::operator[](int k)
const {	
if (k<0 || k>StackLength())	
{		
cerr << "下标越界!" << endl;	
}	
return p_mbuffer[k];
} 
template<typename T> T & MyStack<T>::operator[](int k)
 {	
     if (k<0 || k>StackLength())	
     {		
         cer << "下标越界!" << endl;	
     }	
     return p_mbuffer[k]; 
 }
 
 
 int main(void)
 {
     MyStack<char> stack(30);
     stack.push('s');
     char ch=stack[0];//就这里会显示无法从MyStack<char> 到 char 的适当转换函数,这是哪里出错了吗
     
     return 0;
 
 }



慕雪9123221
浏览 1044回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP