【发布时间】:2012-04-25 10:27:19
【问题描述】:
我必须写这两个方法,打印出其中包含的内容:
ex 是一个由 tokenType tk 组成的数组(抱歉,试图节省空间并避免发布整个结构)
不幸的是,我收到一个编译错误,上面写着:error: no match for âex[i]â 中的 âoperator[]â
如何解决这个问题,让它覆盖
ostream & operator<< ( ostream & os , const tokenType & tk)
{
switch (tk.category)
{
case TKN_OPRAND:
os << tk.operand;
break;
case TKN_OPRTOR:
os << tk.symbol;
break;
}
return os;
}
ostream & operator<< ( ostream & os , const expression & ex)
{
tokenType tk;
for (int i = 0; i < ex.numTokens; i++)
{
tk = ex[i];
os << tk.operand << " "; //problem line is this one
}
return os;
}
struct expression
{
int numTokens ;
tokenType tokens[MAX_TOKENS_IN_EXPRESSION] ;
void print() const ;
int toPostfix( expression & pfx ) const ;
int evalPostfix( int & val ) ;
expression() { numTokens = 0 ; } ; // default constructor
} ;
【问题讨论】:
-
您可以重载
<<运算符。 msdn.microsoft.com/en-us/library/1z2f6c2k(v=vs.80).aspx -
我认为你的编译器从零开始编号,所以你偏离了一个:错误在你的“问题在这里”评论的第一行。
expression是否定义了[]运算符?你能展示一下实现吗? -
没问题,我会在上面编辑它。
标签: c++ operators ostream overriding