Ich habe diese beiden Methoden schreiben, was zum Ausdrucken enthalten ist innerhalb von:Aufschalten der Operator << mit zwei Methoden
ex ist ein Array zusammengesetzt Tokentype tk (sorry, versuchen, um Platz zu sparen und vermeiden Sie die ganze Posting structs)
Leider bin ich einen Compiler-Fehler erhalten, der sagt: Fehler: keine Übereinstimmung für âoperator [] â in AEX [i] â
Wie kann ich dieses Problem beheben, so wird es < < außer Kraft setzen, so dass Die zweite Methode verwendet die erste?
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
} ;
Sie die '' << Betreiber überlasten. http://msdn.microsoft.com/en-us/library/1z2f6c2k(v=vs.80).aspx – prelic
Ich denke, Ihr Compiler nummeriert Zeilen von Null, so dass Sie um eins sind: der Fehler ist in der Zeile eins oben von Ihrem "Problem ist hier" Kommentar. Definiert 'expression' den' [] 'Operator? Können Sie die Implementierung zeigen? – dasblinkenlight
Sicher, ich werde es oben bearbeiten. – rfmas3