gpt4 book ai didi

c++ - 使用两种方法覆盖 << 运算符

转载 作者:搜寻专家 更新时间:2023-10-31 01:15:26 25 4
gpt4 key购买 nike

我必须编写这两个方法,以打印出其中包含的内容:

ex 是一个由 tokenType tk 组成的数组(抱歉,试图节省空间并避免发布整个结构)

不幸的是,我收到一个编译错误:错误:在 â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
} ;

最佳答案

您非常接近 - 您忘记引用 tokens 数组,并尝试索引表达式本身。编译器自然会提示,因为您没有重载 []

这应该有效:

for (int i = 0; i < ex.numTokens; i++)
{
tk = ex.tokens[i]; // <<==== Here is the fix
os << tk.operand << " ";
}

关于c++ - 使用两种方法覆盖 << 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10134359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com