Beiträge von Wasserleiche

    Hä, was willst du machen? Du willst die RS232 (die serielle) Schnittstelle programmieren?

    Klar kannst du das, nur nicht mit ISO C++. Da musst du schon auf die API des Betriebssystem zurückgreifen oder eine Library dazu nutzen.

    Pointer werden nicht standardmäßig mit 0 oder NULL initialisiert. Das musst du selber machen.

    Also

    Code
    int* pointer = NULL;
    //...
    if(pointer == NULL)
    {
       // ...
    }

    Also so ganz verstanden hab ich deine Frage nicht. Wo willst du den Programmpfad auslesen?

    Wenn du den Pfad während der Laufzeit haben willst, müsste das Workingdirectory eigentlich funktionieren. Weiß jetzt allerdings nur wie man das bei Qt hinbekommen würde...

    Halt, du verwechselst hier gerade Definition und Deklaration. In der Header Datei stehen (normalerweise) nur die Definitionen deiner Klassen und deren Methoden/Membervariablen. Dort steht kein ausführbarer Code (Deklaration).
    Der Compiler braucht die Definition für jede Objektdatei (.o) um zu wissen, was er mit einer Instanz machen kann. Die Definition der Klasse steht am Ende nicht in der Objektdatei.

    Natürlich hast du beispielsweise bei Templates, bei der die Deklaration in der Headerdatei drin stehen muss um während der Compilezeit den Code erstellen zu können, Redundanzen. Weiß jetzt aber nicht ob die eventuell wegoptimiert werden. Das müsste dann im Linker geschehen.

    Und Vorwärtsdeklaration von Klassen in Headerdateien beschleunigen einfach den Compiliervorgang, weil der Compiler nicht für jede Objektdatei 100te Header parsen muss.

    Du nutzt in der Header Datei Vorwärtsdeklaration um dort keine Includes nutzen zu müssen. Schöne Sache (mach ich auch so), aber ich glaube du hast vergessen in der kernel.cpp die mainFrame.h zu includen.

    Jetzt weiß der Compiler zwar das es cMainFrame gibt, und kann die Zeigeroperationen ausführen (die Zuweisung) da alle Zeigeradressen 32 bzw. 64 Bit groß sind, aber der Methodenaufruf geht schief -> er weiß ja nicht welche Methoden für cMainFrame überhaupt existieren.

    Das Problem ist, dass string::operator[] eine Referenz auf ein char zurück gibt. Der + Operator aber mindestens einen String haben will.

    So würde es aber beispielsweise gehen:

    Code
    string tmp1, tmp2;
    getline(cin, tmp1);
    
    
    if(tmp1.length() > 2)
    {
       tmp2 = string(1, tmp1[1]) + tmp1[2];
       cout << tmp2 << endl;
    }

    In der If-Anweisung lässt du dir temporär einen String erstellen mit dem der + Operator arbeiten kann.

    Tja, das liegt schlicht und ergreifend daran, dass hier keine "String-zusammenfüg-Funktion" aufgerufen wird, sondern der ASCII Wert von a (97) und l (108) addiert wird.

    Warum nutzt du für tmp eigentlich keinen std::string, wäre einfacher. Für std::string gibt es nämlich einen + Operator der genau das macht was du willst.

    Wenn du mit c-strings arbeiten willst, dann musst du auf strcpy() zurückgreifen. Aber das würde ich nicht empfehlen...

    Ich trau mich zu wetten, dass die letzten 5 Threads alle von dir sind.

    Und wenn ich das ganze unter diesem Aspekt betrachte, solltest du dich erst etwas mehr mit c/c++ Grundlagen beschäftigen, als ohne diese Programme zu schreiben.

    Arbeite erstmal ein gutes Tutorial komplett durch, und dann stell die verbleibenden Fragen!

    Sorry, aber ein Tutorial schreib ich jetzt nicht. Die gibts wie Sand am Meer. Trotzdem mal ein paar Tipps:

    Um nicht zu überschreiben übergibst du ios_base::app im Konstruktor von ofstream. Damit hängst du alles hinten dran.

    Um lesend und schreibend auf die Datei zugreifen zu können, müsstest du fstream nutzen, anstatt ofstream. Das Auslesen der Datei würde ich in eine Funktion packen, und dir die Informationen in eine Liste schreiben. Bei Programmstart rufst du die Funktion zum Auslesen einmal auf.

    Anfügen der neuen Informationen könntest du dann auch erstmal mit der Liste machen. Kurz bevor sich das Programm dann beendet schreibst du die neuen Informationen hinten dran. Diese Funktionalität würde ich auch in eine Funktion packen.

    Links:
    Für die Liste nimm die std::list.
    Informationen zu fstream oder ofstream.

    Naja, ich kanns ja nur vermuten, da ich deine Klassendefinitionen nicht kenne.

    Aber im Großen und Ganzen müsste es ja so aussehen:

    Dann funktionieren auch die Konstruktoren. Aber ohne die Headerdateien zu sehen ist das alles reine Spekulation.
    Ich verstehe nicht ganz warum du das nicht verstehst, du hast das doch selber geschrieben, oder? Oder handelt es sich um Code eines fremden Programms?

    Also wegen der Warnung: nutze "0.0" und die dürfte nicht mehr auftauchen.

    Und was meinst du mit "Was hat das genau zu bedeuten?", beziehst du dich da auf den Codeschnippsel?

    Ich hab mich vor einer Weile mal mit Qt beschäftigt, aber kann nicht sagen ob es an einem Update liegen könnte... sry...