Die meistgestellten Fragen



  • 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.



  • Sorry. Ich meinte den aus der OOP - als Konzept - bekannten Begriff der Methode ... nicht wirklich passend auf die gestellte Frage hin. 🤡

    Natürlich ist es - auf C++ bezogen - eine Memberfunktion.

    cheers, Swordfish


Gesperrt