string template: fehler in der deklarationssyntax



  • hallo ihr,

    es ist sehr merkwürdig. ich würde gern mit der standard c++ bibliothek und der klasse basic_string arbeiten und habe dazu den header <string> eingebunden.
    in meiner .cpp funktioniert das auch, nur in der zugehörigen .h wirft er mir beim kompilieren den fehler:

    #include <stdio.h>
    #include <string>
    #include <iostream>
    #include <stdlib>
    
    extern string test; // Zeile 13
    extern DWORD __fastcall WriteBackupBatch(string backupbat, string restorebat); // Zeile 29
    
    [C++ Fehler] ExtCalls.h(13): E2141 Fehler in der Deklarationssyntax
    [C++ Fehler] ExtCalls.h(29): E2147 Parameterdeklaration darf nicht mit 'string' beginnen
    

    Mir ist völlig unklar, wieso borland hier meckert. unter VC++ klappt das einwandfrei.

    freu mich über aufklärung und wünsche schönen abend!

    oli



  • Hallo

    der Namespace std ist nicht offen. Also vor der string-Deklaration

    using namespace std;
    

    oder bei jeder einzelnen Deklaration

    std::string x;
    

    VC++ öffnet den Namespace anscheinend per Default.

    bis bald
    akari



  • Hallo,

    Bitte

    using namespace std;
    

    niemals in den Header packen. Du öffnest ja sonst den Namensbereich für alle Dateien wo der Header eingebunden wird, was den Sinn von Namensbereichen ad absurdum führt.



  • hallo,

    erstmal danke an akari für die prompte antwort. zu meiner schande aber zur klärung der sache muss ich sagen, dass ich das

    using namspace std;
    

    tatsächlich vergessen hatte in meiner bcb-datei, wo ich es doch in der vc++-datei drin hatte. das hat das problem natürlich behoben.

    wenn ich den namespace nicht öffnen soll in der header-datei, schreibe ich dort dan n also einfach überall std::string, ja? na gut, ist ja kein problem. danke für den tip und die erklärung, Braunstein.

    oli


Anmelden zum Antworten