я должен написать эти два метода, чтобы распечатать, что содержится в:Переопределение оператора <<, используя два метода
бывший массив, состоящий tokenType тк (извините, пытаясь сэкономить пространство и избежать размещения целого Структуры)
к сожалению, я получаю ошибку компиляции, которая говорит: ошибка: не подходит для âoperator [] â в AEX [я] â
Как я могу это исправить, так что перекроет < <, так что второй метод использует первый?
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
} ;
Вы можете перегрузить '' << оператора. http://msdn.microsoft.com/en-us/library/1z2f6c2k(v=vs.80).aspx – prelic
Я думаю, что ваш номер вашего компилятора с нуля, поэтому вы отключены на единицу: ошибка на линии одна выше от вашего комментария «проблема здесь». Определяет ли 'выражение'' '[]' оператор? Не могли бы вы показать реализацию? – dasblinkenlight
Несомненно, я отредактирую его выше. – rfmas3