Die meistgestellten Fragen



  • Kurz: Du kannst einen Wert umwandeln in eine Ganzzahl.

    Lang: In C++ gibt es ein ganzes Sortiment von Cast-Operatoren (Typumwandlung):

    • static_cast<T>(x) - explizite Typumwandlung
    • dynamic_cast<T>(x) - Downcasts für polymorphe Typen (Pointer oder Referenzen)
    • const_cast<T>(x) - um die const'nes von Objekten zu entfernen
      (da solltest du besser dreimal nachdenken, bevor du es verwendest)
    • reinterpret_cast<T>(x) - Uminterpretation auf Bit-Ebene
    • (T)x oder T(x) - C-Stil Cast bzw. Funktion-Stil Cast
      (können je nach Situation static_cast, const_cast oder reinterpret_cast darstellen)

    Wie genau der Compiler das umsetzt, hängt von den verwendeten Datentypen ab. Aber in der Regel wird er eine passende Typumwandlung suchen, mit der er dein x als int-Wert lesen kann (was das ist, hängt im wesentlichen davon ab, wie x definiert ist).

    PS: Bei Fragen darfst du gerne einen eigenen Beitrag eröffnen.



  • also ich kann auch eine dezimal zahl in den ascii code umwandeln also das geht aber wie macht der befehl das



  • yanke23 schrieb:

    also ich kann auch eine dezimal zahl in den ascii code umwandeln also das geht aber wie macht der befehl das

    char ist auch nur ein Ganzzahltyp, mit dem C++ problemlos rechnen kann. Der Trick dabei ist, daß die Ein-/Ausgabe einen char als ASCII-Zeichen darstellen kann.



  • Mal etwas zu dem ersten Punkt gesagt: Ich finde es garnicht so schwer eine richtige Oberfläche zu programmieren. Dies ist mein 3 Tag, in dem ich mich mit C/C++ beschäfftige und ich habe es geschafft eine Oberfläche zu erstellen. Gut, ich weis noch nicht, was z.B.
    wcx.cbClsExtra = 0;
    heißt. Aber was bringt mir das. Ich kann meine Oberfläche mit meinem Quelltext in größe, aussehen und Beschriftung ändern. Und das reicht mir. Mein Informatiklehrer hat mir einmal gesagt: man muss nicht alles Programmieren können. Man muss nur wissen wo es steht!
    Ich finde diesen Spruch wirklich richtig. (bei z.B. Microsoft Words muss man doch auch nicht wissen, wie man einen zeilenvorschub hinbekommt, wenn man das erste mal mit ihm umgeht. Es reicht voll und ganz ein programm aufrufen zu können etwas reinzuschreiben und es zu speichern. Wenn man später etwas braucht kann man es dann natürlich noch suchen! Eine richtige Arbeitserleichterung!



  • raubritter schrieb:

    Mal etwas zu dem ersten Punkt gesagt: Ich finde es garnicht so schwer eine richtige Oberfläche zu programmieren. Dies ist mein 3 Tag, in dem ich mich mit C/C++ beschäfftige und ich habe es geschafft eine Oberfläche zu erstellen. Gut, ich weis noch nicht, was z.B.
    wcx.cbClsExtra = 0;
    heißt. Aber was bringt mir das. Ich kann meine Oberfläche mit meinem Quelltext in größe, aussehen und Beschriftung ändern. Und das reicht mir. Mein Informatiklehrer hat mir einmal gesagt: man muss nicht alles Programmieren können. Man muss nur wissen wo es steht!
    Ich finde diesen Spruch wirklich richtig. (bei z.B. Microsoft Words muss man doch auch nicht wissen, wie man einen zeilenvorschub hinbekommt, wenn man das erste mal mit ihm umgeht. Es reicht voll und ganz ein programm aufrufen zu können etwas reinzuschreiben und es zu speichern. Wenn man später etwas braucht kann man es dann natürlich noch suchen! Eine richtige Arbeitserleichterung!

    Vielleicht kannst du eine Oberfläche erstellen, aber es birgt drei Nachteile:
    1.) Du benutzt WinAPI. Das ist C und plattformabhängig.
    2.) Früher oder später werden deine Programme einfach so abstürzen. Und du wirst nicht wissen warum, glaub mir.
    3.) Wir sollen dir dann dabei helfen 😃

    mfg.



  • hat jemand so ne art erklärung des objektinspektors...?
    also wo kurz aufgeführt ist was bei welcher einstellung passiert



  • 1. Was ist "der Objektinspektor"?
    2. Wieso ist das eine meistgestellte Frage?



  • 1. Ich kenn sowas beim BCB (würde dann ins BCB-Forum gehören)
    2. Das ist keine solche 🙂
    Vielleicht könnte ein Mod diese Frage mal abtrennen.



  • Hallo

    Objektinspektor ist ein Teil des Borland Builders, und damit hat die Frage hier nichts zu suchen. Das gehört ins Builder-Forum.

    Die Eigenschaften die dort angezeigt werden sind kontextabhängig, und zwar vom ausgewähltem Komponententyp. Und eine detaillierte Dokumentation der Komponententypen findest du in der Builder-Hilfe : F1 drücken.

    bis bald
    akari


  • Mod

    Vorschlag für einen weiteren Eintrag: zum Unterschied zwischen Klassentemplate und Templateklasse bzw. Funktionstemplate und Templatefunktion.



  • Meinst du, das wird häufig benötigt? Wenn ja, dann kann ich ja mal den entsprechenden Abschnitt aus "C++ Templates" zu Hause zusammenfassen.



  • akari schrieb:

    Hallo

    Objektinspektor ist ein Teil des Borland Builders, und damit hat die Frage hier nichts zu suchen. Das gehört ins Builder-Forum.

    Die Eigenschaften die dort angezeigt werden sind kontextabhängig, und zwar vom ausgewähltem Komponententyp. Und eine detaillierte Dokumentation der Komponententypen findest du in der Builder-Hilfe : F1 drücken.

    bis bald
    akari

    Ah super danke, genau das wollte ich auch wissen. 🙂
    👍Außerdem echt super Forum! 😉 also hilfreich.

    Wenn jemand will, kann er auch diesen: ***zensiert*** Link anklicken, damit tut ihr mir einen großen Gefallen, und lernt evtll. noch ein super Browsergame kennen. 😉
    (Nur so nebenbei, also wer drauf klicken will dann klickne 😉 )

    Ich werd noch weiterhin hier durchstöbern, da hier wirklich gute Sachen zu finden sind!

    MfG
    valaBoo



  • Kann ein Mod bitte den Link dort zensieren? 🙄 😡



  • The-Kenny schrieb:

    Kann ein Mod bitte den Link dort zensieren? 🙄 😡

    Wenn du so freundlich bittest, aber immer doch 😉



  • int cgls ( Sparse_Matrix &A , const Vektor &b , Vektor &x0 , int k_max , double &eps )
    {
    	if(A.Zeilen() < A.Spalten())
    	{
    		cerr << "Ungültige Matrix für cgls, Zeilen < Spalten" << endl;
    		return 0;
    	}
    	Vektor r(b - A*x);
    	Vektor s(r*A);
    	Vektor d(s);
    	double alpha, beta, norm_s;
    	int k = 0;
    	while(++k < k_max && s.Norm2() < eps)
    	{
    		alpha =  s.Norm2()*s.Norm2()/((A*d).Norm2()*(A*d).Norm2());
    		x0 += alpha * d;
    		r -= alpha * (A*d);
    		norm_s = s.Norm2();
    		s = r*A;
    		beta = s.Norm2()*s.Norm2()/(norm_s*norm_s)
    		d  = s + beta*d;
    	}
    	eps = s.Norm2();
    	return k;
    }
    

    // Edit: Code tags hinzugefügt



  • Warum werden bei manchen Funktionsaufrufen '::' benutzt und an anderen stellen benutzt man '.' oder '->'?



  • Das sind dann keine Funktionsaufrufe, sondern Methodeaufrufe.

    Bei statischen Methoden musst Du nur den Scope angeben:

    class foo_t {
    
        public:
            static void bar( ) { };
    };
    
    int main( ) {
    
        foo_t::bar( );
    }
    

    für andere benötigst du ein Objekt:

    class foo_t {
    
        public:
            void bar( ) { };
    };
    
    int main( ) {
    
        foo_t a_foo;
    
        a_foo.bar( );
    }
    

    cheers, Swordfish


  • Mod

    Swordfish schrieb:

    Das sind dann keine Funktionsaufrufe, sondern Methodeaufrufe.

    Das solltest du besser zurücknehmen. Der Begriff "Methode" hat in C++ keine formale Bedeutung, dort gibt es nur Funktionen. Welche Arten davon (hier: Memberfunktionen) jeweils als Methode bezeichnet werden, ist kontextabhängig.



  • camper schrieb:

    Swordfish schrieb:

    Das sind dann keine Funktionsaufrufe, sondern Methodeaufrufe.

    Das solltest du besser zurücknehmen. Der Begriff "Methode" hat in C++ keine formale Bedeutung, dort gibt es nur Funktionen. Welche Arten davon (hier: Memberfunktionen) jeweils als Methode bezeichnet werden, ist kontextabhängig.

    Auch wenn du recht hast das es keine standisierte Bedeutung hat, ist diese Verwendung von Funktion/Methode doch sehr verbreitet. Also als falsch würde ich die Aussage von Swordfish auch nicht hinstellen, auch wenn es nicht überall so verwendet wird (Wobei ich es aus den bisherigen Firmen auch nur in dieser Art kenne, und es auch in OO-Büchern eine recht verbreitete Bezeichnung ist [gehe hier mal von ca. 80%+ aus]).

    cu André


  • Mod

    asc schrieb:

    camper schrieb:

    Swordfish schrieb:

    Das sind dann keine Funktionsaufrufe, sondern Methodeaufrufe.

    Das solltest du besser zurücknehmen. Der Begriff "Methode" hat in C++ keine formale Bedeutung, dort gibt es nur Funktionen. Welche Arten davon (hier: Memberfunktionen) jeweils als Methode bezeichnet werden, ist kontextabhängig.

    Auch wenn du recht hast das es keine standisierte Bedeutung hat, ist diese Verwendung von Funktion/Methode doch sehr verbreitet. Also als falsch würde ich die Aussage von Swordfish auch nicht hinstellen, auch wenn es nicht überall so verwendet wird (Wobei ich es aus den bisherigen Firmen auch nur in dieser Art kenne, und es auch in OO-Büchern eine recht verbreitete Bezeichnung ist [gehe hier mal von ca. 80%+ aus]).

    cu André

    Die Wahrheit oder Unwahrheit einer Behauptung ist nicht davon abhängig, wieviele Personen diese verbreiten (dass ich das überhaupt sagen muss, betrachte ich als Zumutung). In C++ ist jeder Methodenaufruf (egal, welche übliche Verwendung wir nutzen) ein Funktionsaufruf, weil jede Methode eine Funktion ist. Mithin ist Swordfishs Aussage falsch, ohne wenn und aber. Es spielt auch keine Rolle, wie verständlich es ist, das dieser Fehler gemacht wurde - das kann schon gar kein Kriterium sein in einem Thread wie diesem, der immer wieder gelesen werden wird.


Anmelden zum Antworten