Borland IDE Bloodshed Dev-C++ kompiliert ungerne



  • Hej,
    ich wollte mich gerade in Objektorientierter Programmierung und Vererbung etwas auffrischen, dazu gehörte bei mir auch mal das Versuchen der Polymorphie. Dabei fällt mir in der Bloodshed Dev-C++ IDE auf, dass er bei folgenden Aktionen falsch handelt:

    #include <iostream>
    #include "main.hpp"
    
    using namespace std;
    
    int main() {
        Klassen::Basisklasse* basis;
        Klassen::Subklasse sub(5, "Hallo!");
        basis = &sub;
        basis->ausgabe();
        delete(&sub);
        cin.get();
    }
    

    Rein theoretisch müsste die ausgabe der Basisklasse aufgerufen werden, da ich sie woanders nicht als virtual definiert habe. Das juckt aber die IDE kein bisschen.
    Ferner noch, wenn ich nun in meiner Datei main.hpp die Methode der Basisklasse virtuell definiere, kompiliert die IDE mein Projekt gar nicht, sondern gibt den letzten Build einfach aus.
    Erst wenn ich mit Absicht einen Fehler einbaue und ihn dann korrigiere, übernimmt meine IDE auch den Rest.
    Ich finde das sehr komisch und nervend, spinnt da meine IDE? Oder ist das so eine intelligente Einstellung der IDE die besagt: "Wenn nur 'ne Header-Datei verändert wurde, kompiliere ich das Projekt doch nicht noch einmal!" obwohl das ja nötig wäre?!
    Welche IDE empfehlt ihr mir eigentlich? Ich habe früher mal mit VS 2008 gearbeitet und diverses .NET gelernt, aber ihr wisst ja, es ist eben "nur" Microsoft. Noch dazu: ich bin in C++ so einigermaßen fortgeschritten, hab ein Anfängerbuch durch und bin so bei 1/4 von Stroustrups Kompendium. Was ist da für mich am besten?



  • Ad aCTa schrieb:

    Borland IDE Bloodshed Dev-C++

    Ad aCTa schrieb:

    Ich habe früher mal mit VS 2008 gearbeitet und diverses .NET gelernt, aber ihr wisst ja, es ist eben "nur" Microsoft.

    Ad aCTa schrieb:

    ich bin in C++ fortgeschritten, hab ein Anfängerbuch durch

    Ich sehe lauter Widersprüche 😕



  • Ad aCTa schrieb:

    ich wollte mich gerade in Objektorientierter Programmierung und Vererbung etwas auffrischen, dazu gehörte bei mir auch mal das Versuchen der Polymorphie. Dabei fällt mir in der Bloodshed Dev-C++ IDE auf, dass er bei folgenden Aktionen falsch handelt:

    1. Würde ich auf eine aktuelle Entwicklungsumgebung umstellen (z.B. den kostenlosen MSVC++ 2008 Express oder Code::Blocks)
    2. Vor allem ist aber auch dein Code falsch.

    Klassen::Basisklasse* basis;
        Klassen::Subklasse sub(5, "Hallo!");
        basis = &sub;
        basis->ausgabe();
        delete(&sub); // Weist du eigentlich was du da tust?
    

    a) Grundsätzlich würde ich Variablen immer initialisieren, zudem erst dann deklarieren wenn sie verwendet werden.
    b) Zu jedem new gehört genau ein delete. Ein Objekt das aber nicht mittels new angelegt wird NIEMALS mit delete löschen. => Undefiniertes verhalten.

    Ad aCTa schrieb:

    Welche IDE empfehlt ihr mir eigentlich? Ich habe früher mal mit VS 2008 gearbeitet und diverses .NET gelernt, aber ihr wisst ja, es ist eben "nur" Microsoft. Noch dazu: ich bin in C++ so einigermaßen fortgeschritten, hab ein Anfängerbuch durch und bin so bei 1/4 von Stroustrups Kompendium. Was ist da für mich am besten?

    Tut mir leid, aber du bist mit C++ nicht wirklich fortgeschritten nach deinem Code zu urteilen. Davon abgesehen ist der MSVC 2008 unter Windows einer der besten Entwicklungsumgebungen - da ändert auch nichts dran das Microsoft diesen entwickelt.

    Zudem: Der Stroustrup ist als Referenz vielleicht ganz gut, zum durcharbeiten aber weniger geeignet.

    cu André



  • Sorry, das mit dem Delete ist natürlich nur für Objekte auf dem Heap notwendig, ich weiß. Hab's einfach mal eingefügt, um zu testen, was der Compiler macht (löscht beide Objekte)
    Gut, dann gehe ich eben zurück auf VS 2008, danke!


Log in to reply