Variable inkrementieren



  • C++Pete schrieb:

    Wer kann mir eine vernünftige Antwort geben?

    Keiner, weil du keinen weiteren Code postest (wie immer?). 🙂



  • Deine Frage ergibt -- mal wieder -- nur wenig Sinn. Wie wärs mit mehr Code?



  • virtual void RunLoop
    {
    static int i=1;

    ARM* px=dynamic_cast<ARM*>(p_controller);
    if (px)
    px->StatusPrint();

    i+=1;
    printf("Der Wert der Variablen i beträgt: %d\n",i);
    }

    Der Zeiger p_controller ist vom Typ der Klasse Base
    Die Klasse ARM erbt alles von der Klasse Base


  • Mod

    Ist denn das, worauf p_controller zeigt, vom Typ ARM? Falls ja: Wieso ist p_controller nicht vom Typ ARM*? Fehldesignalarm.

    edit: Ach, du sagst selber, es wäre vom Typ Base, nicht ARM. Ist doch klar, dass das nicht geht, genau dazu ist der dynamic_cast doch da. Trotzdem Fehldesignalarm, da der Code dann noch weniger Sinn macht, wenn du schon zur Compilezeit weißt, dass der Cast fehlschlagen muss.

    Sone schrieb:

    Lies ein gutes Buch.

    Egal was du von Sones Ton hältst, er hat absolut Recht. Der Code ist totaler Murks auf übelstem Frickelniveau. Globale Variablen, wildes Casten, typunsichere Funktionen, komische Vererbungshierarchien, statische Daten. So sollte man niemals programmieren, das provoziert bloß selbstverursachte Fehler. Wie du gerade selber merkst.



  • alternativ auch: ++variable;
    Repraesentiert noch direkter die Idee des Inkrementierens... Gilt auch fuer das Dekrementieren: --variable;

    beides auch auf Pointer, wenn man sie mal verwendet, anwendbar 😉

    mfg
    HarteWare



  • SeppJ schrieb:

    Sone schrieb:

    Lies ein gutes Buch.

    Egal was du von Sones Ton hältst, er hat absolut Recht. Der Code ist totaler Murks auf übelstem Frickelniveau. Globale Variablen, wildes Casten, typunsichere Funktionen, komische Vererbungshierarchien, statische Daten. So sollte man niemals programmieren, das provoziert bloß selbstverursachte Fehler. Wie du gerade selber merkst.

    Entgegen anscheinend weitverbreiteter Ansicht haben Fehler konkrete Fehlerursachen. Die haben wir hier noch nicht gefunden. Du glaubst hoffentlich nicht wirklich, dass ein dynamic_cast oder vermeintliches "Fehldesign" (das BTW ziemlich sicher nicht von C++Pete stammt) dazu führen, dass weiter unten eine damit völlig unzusammenhängende Variable nicht inkrementiert wird.


  • Mod

    Bashar schrieb:

    Entgegen anscheinend weitverbreiteter Ansicht haben Fehler konkrete Fehlerursachen. Die haben wir hier noch nicht gefunden. Du glaubst hoffentlich nicht wirklich, dass ein dynamic_cast oder vermeintliches "Fehldesign" (das BTW ziemlich sicher nicht von C++Pete stammt) dazu führen, dass weiter unten eine damit völlig unzusammenhängende Variable nicht inkrementiert wird.

    Wo solche Sachen drin sind und solche Fragen gestellt werden, vermute ich
    a) Dass da jede Menge UB drin ist und vermutlich noch viel mehr Funktionen mit Nebeneffekten, die wer weiß was machen
    b) Dass die Fehlerbeschreibung äußerst ungenau ist. Vielleicht heißt "wird nicht erhöht" bei ihm auch so viel wie "stürzt vorher mit Exception ab".

    Das b) könnte auch genau die konkrete Fehlerursache sein. Vielleicht hat er ein try catch drumherum, ruft das ganze N mal auf, davon kommt der Code aber bloß M < N mal beim i+=1 an, da bloß M der Objekte tatsächlich ARMs sind, und er wundert sich nun, warum i != N.

    Aber ja: Die eigentlich Ursache ist schlampige Vorgehensweise, egal was der konkrete Fehler ist. Wer schlampige Codebeispiele in einer schlampig formulierten Frage in schlampig geschriebenem Deutsch zeigt, der programmiert auch sonst schlampig und braucht sich über viele Fehler nicht zu wundern. Das weiß ich einfach aus Erfahrung. Da reicht normalerweise sogar nur eines der drei Kriterien, um das sagen zu können.
    edit: Wobei C++-Petes Deutsch ganz in Ordnung ist. Da ist er gedanklich durch den Rest des Beitrags zu unrecht schon in der Schublade der Sprachschlamper gelandet.



  • Danke für das Kompliment :). Was macht ihr eigentlich beruflich?



  • C++Pete schrieb:

    Danke für deinen direkten höflichen Lösungsvorschlag. Wer kann mir eine vernünftige Antwort geben?

    Shit in. Shit out. Auch wenn man wollte, könnte man dir nicht helfen, weil du dir selbst im Weg stehst. Ich sehe hier nichts, was man "bearbeiten" könnte. Es sind nur sinnfrei aussehende Code-Fetzen.



  • krümelkacker schrieb:

    Shit in. Shit out. Auch wenn man wollte, könnte man dir nicht helfen, weil du dir selbst im Weg stehst. Ich sehe hier nichts, was man "bearbeiten" könnte. Es sind nur sinnfrei aussehende Code-Fetzen.

    *ohne Code tags


Anmelden zum Antworten