Namespace von WinAPI???



  • Ich habe eine Klasse (gedownloaded 😃 cooles deutsch), die die Methode DeleteFile(uint) enthält.
    Dann habe ich eine Wrapperklasse geschrieben und die o.a. Klasse abgeleitet. Darin habe ich eine Methode selber geschrieben, die die API Funktion DeleteFile(LPCTSTR) aufrufen soll.

    Mein Problem ist, der Compiler meldet Fehler, er kann nicht LPCTSTR nach uint konvertieren.

    Ich habe jetzt 3 Möglichkeiten:
    1. Die Wrapperklasse weglassen und die Funktionalität außerhalb der Klasse programmieren, damit ruft DeleteFile immer die API Funktion auf (nicht schön)

    2. Es gibt einen Namespace für WinAPI? 😕 Das ist auch gleich meine Frage.

    3. Wisst ihr noch eine dritte Lösung??

    Gruß

    PS: War mir nicht ganz klar, ob ich das nach C++ posten soll oder nach WinAPI



  • nicht böse gemeint aber:
    3. C++ lernen

    Die Wrapperklasse weglassen und die Funktionalität außerhalb der Klasse programmieren, damit ruft DeleteFile immer die API Funktion auf (nicht schön)

    das hört sich für mich an, als ob du keinen beil von C++ hast

    schick mir einfach das Projekt an meine E-Mail und ich kann mir den Fehler angucken



  • electron_1 schrieb:

    1. Die Wrapperklasse weglassen und die Funktionalität außerhalb der Klasse programmieren, damit ruft DeleteFile immer die API Funktion auf (nicht schön)

    😕 erklärung 😕 das objekt hat doch seinen eignen scope

    electron_1 schrieb:

    2. Es gibt einen Namespace für WinAPI? 😕 Das ist auch gleich meine Frage.

    nein

    electron_1 schrieb:

    3. Wisst ihr noch eine dritte Lösung??

    namespace Foo
    {
     void DeleteFile(uint)
     {
       // umwandeln von uint nach const char*
       ::DeleteFile(/*..*/); // winapi func aufrufen
     }
    }
    

    [edit]
    ganz schön langsam heute 😃



  • class A
    {
       deleteFile(uint);
    };
    class B : public A
    {
       deleteAllFiles(string);
    };
    B::deleteAllFiles(string Pfad)
    {
       //gib mir alle Dateinamen in diesem Pfad
       while(Dateiname != "")
       {
          deleteFile(Dateiname);//Compiler meldet Fehler
       }
    }
    

    Jetzt wird es hoffentlich klarer. A macht irgendwas tolles mit Dateien (zippen) und hat zufällig irgendeine Methode deleteFile(uint) die ich aber gar nicht aufrufen will.
    Mein deleteFile(Dateiname) hat natürlich einen Scope, nähmlich den von A und genau das will ich nicht!



  • dann gehe doch in den globalen namespace 😉

    void B::deleteAllFiles(string Pfad)
    {
       while(Dateiname != "")
       {
          ::DeleteFile(Dateiname);
       }
    }
    

    [edit]
    blödes bold tag
    [edit2]
    text etwas eindeutiger geschrieben 😃



  • das wars 👍 danke


Anmelden zum Antworten