Fehler: Ungültige Template-Argumentliste



  • Hallo.

    Findet sich in folgender Anweisung ein Fehler?

    vector< pair<string, TokenType> > tokens;
    

    Ist die Deklaration ener Membervariable in einer Parserklasse.

    Die benötigten Header sind eingebunden.
    TokenType ist auch bekannt (enum).

    Im VisualC++.Net2003 ist das ganze auch gegangen.
    Danach habe ich das selbe aber im BCB5 Kompiliert, und da ist dann der Fehler:
    'Ungültige Template-Argumentliste' gekommen.

    Ausserdem hat der Borland Probleme mit allen pair Variablen.

    pair<string, valType> p1;
    pair<string, TokenType> p2;
    

    Ich kann mir das echt nicht erklären.

    Was glaubt ihr was beim Borland (oder im code) fehlerhaft sein kann.



  • sicher, das du <utility> eingebunden hast, damit ees überhaupt std::pair gibt?



  • Ja ich habe sogar <utility> eingebunden. Obwohl es IMHO nicht nötig wäre. (Im VC++ ist es auch ohne gegangen)



  • probier doch einfach mal zum Test pair<int, int>



  • pair<int, int>
    

    geht.

    Dann wird es wohl daran liegen:

    enum TokenType
    {
        /* ...*/
    };
    

    Aber warum gehts im VC++? Soll ich statt dem enum etwas anderes nehmen?

    Oder würde es gehen, wenn ich in der Template-Argumentliste statt TokenType einfach int angebe? Da müsste doch automatisch konvertiert werden. Oder? (Ich denke nur laut nach)



  • Jover schrieb:

    Oder würde es gehen, wenn ich in der Template-Argumentliste statt TokenType einfach int angebe? Da müsste doch automatisch konvertiert werden. Oder? (Ich denke nur laut nach)

    Jap, jetzt gehts. Danke für den Hinweis aa. 👍


Anmelden zum Antworten