private Methode benutzt private Methode



  • Tachyon schrieb:

    Jetzt noch mal mit cpp-Tags, ordentlich formatiert und mit Kenntlichmachung der problematischen Stelle.

    Bitte was?



  • Matrix3<T> ist nicht die selbe Klasse wie Matrix<T, R, C> , deshalb hat Matrix<T, R, C> auch keinen Zugriff auf private Elemente von Matrix3<T>



  • 82kolu schrieb:

    Tachyon schrieb:

    Jetzt noch mal mit cpp-Tags, ordentlich formatiert und mit Kenntlichmachung der problematischen Stelle.

    Bitte was?

    Du sollst Deinen Code ordentlich posten und cpp-Tags benutzen. Dann sieht das z.B. so aus:

    int bla(int faser)
    {
       globber(faser);
    }
    


  • Tachyon schrieb:

    Matrix3<T> ist nicht die selbe Klasse wie Matrix<T, R, C> , deshalb hat Matrix<T, R, C> auch keinen Zugriff auf private Elemente von Matrix3<T>

    und das funktioniert nur deshalb nicht weil ich es private gemacht habe?
    also davor hat es geklappt... (verständnisprobleme...)bei mir



  • Tachyon schrieb:

    Matrix3<T> ist nicht die selbe Klasse wie Matrix<T, R, C> , deshalb hat Matrix<T, R, C> auch keinen Zugriff auf private Elemente von Matrix3<T>

    also daran lag es nicht.



  • ja genau. private sagt: niemand ausser der Klasse selbst kann auf die Methode zugreifen.

    Unabhängig davon: wozu brauchst du die Determinante überhaupt? Ich wittere da sinnlose Programmieranstrengungen 😉



  • otze schrieb:

    ja genau. private sagt: niemand ausser der Klasse selbst kann auf die Methode zugreifen.

    Unabhängig davon: wozu brauchst du die Determinante überhaupt? Ich wittere da sinnlose Programmieranstrengungen 😉

    Sollte ja eig kein problem sein von public auf private zu machen... irgendwo muss ich n denkfehler haben ^^ bevor der draußen ist kann ich nicht schlafen ^^


  • Mod

    82kolu schrieb:

    otze schrieb:

    ja genau. private sagt: niemand ausser der Klasse selbst kann auf die Methode zugreifen.

    Unabhängig davon: wozu brauchst du die Determinante überhaupt? Ich wittere da sinnlose Programmieranstrengungen 😉

    Sollte ja eig kein problem sein von public auf private zu machen... irgendwo muss ich n denkfehler haben ^^ bevor der draußen ist kann ich nicht schlafen ^^

    otze meinte wohl eher das Ausrechnen der Determinante. Das ist nämlich (genauso wie das ausrechnen der Inversen einer Matrix) etwas, was man nur in der Theorie benutzt, um damit irgendwas zu beweisen, aber in praktischer Numerik tunlichst vermeidet, da praktisch immer unnötig und sehr rechenaufwendig.



  • SeppJ schrieb:

    82kolu schrieb:

    otze schrieb:

    ja genau. private sagt: niemand ausser der Klasse selbst kann auf die Methode zugreifen.

    Unabhängig davon: wozu brauchst du die Determinante überhaupt? Ich wittere da sinnlose Programmieranstrengungen 😉

    Sollte ja eig kein problem sein von public auf private zu machen... irgendwo muss ich n denkfehler haben ^^ bevor der draußen ist kann ich nicht schlafen ^^

    otze meinte wohl eher das Ausrechnen der Determinante. Das ist nämlich (genauso wie das ausrechnen der Inversen einer Matrix) etwas, was man nur in der Theorie benutzt, um damit irgendwas zu beweisen, aber in praktischer Numerik tunlichst vermeidet, da praktisch immer unnötig und sehr rechenaufwendig.

    Ja egal, ich will trotzdem wissen wo der fehler ist 😛



  • Es liegt wie gesagt daran, dass Objekte einer Klasse A nicht auf private Member von Objekten einer Klasse B zugreifen können.



  • Tachyon schrieb:

    Es liegt wie gesagt daran, dass Objekte einer Klasse A nicht auf private Member von Objekten einer Klasse B zugreifen können.

    Sieht so aus als ob er das nicht verstanden hätte.
    http://de.wikibooks.org/wiki/C++-Programmierung:_Klassen



  • 7xCore schrieb:

    Tachyon schrieb:

    Es liegt wie gesagt daran, dass Objekte einer Klasse A nicht auf private Member von Objekten einer Klasse B zugreifen können.

    Sieht so aus als ob er das nicht verstanden hätte.
    http://de.wikibooks.org/wiki/C++-Programmierung:_Klassen

    also wnen ich es richtig verstanden hab, soll ich aus Matrix3<T> Matrix<T,3,3> machen, richtig?
    weil das hab ich gemacht und es ist immernoch falsch



  • 82kolu schrieb:

    7xCore schrieb:

    Tachyon schrieb:

    Es liegt wie gesagt daran, dass Objekte einer Klasse A nicht auf private Member von Objekten einer Klasse B zugreifen können.

    Sieht so aus als ob er das nicht verstanden hätte.
    http://de.wikibooks.org/wiki/C++-Programmierung:_Klassen

    also wnen ich es richtig verstanden hab, soll ich aus Matrix3<T> Matrix<T,3,3> machen, richtig?
    weil das hab ich gemacht und es ist immernoch falsch

    Wenn Du aus einer Matrix<T,4,5> auf eine Matrix<T,3,3> zugreifst, dann geht es immer noch nicht, weil es immernoch unterschiedliche Klassen sind. Du kannst aus einem Matrix<T,4,5> -Objekt nur auf private Member von anderen Matrix<T,4,5> -Objekten zugreifen, aber nicht auf private Member von z.B. Matrix<T,3,3> -Objekten. Sobald sein Templateparameter unterschiedlich ist, hast Du auch unterschiedliche Templateklassen.



  • Tachyon schrieb:

    82kolu schrieb:

    7xCore schrieb:

    Tachyon schrieb:

    Es liegt wie gesagt daran, dass Objekte einer Klasse A nicht auf private Member von Objekten einer Klasse B zugreifen können.

    Sieht so aus als ob er das nicht verstanden hätte.
    http://de.wikibooks.org/wiki/C++-Programmierung:_Klassen

    also wnen ich es richtig verstanden hab, soll ich aus Matrix3<T> Matrix<T,3,3> machen, richtig?
    weil das hab ich gemacht und es ist immernoch falsch

    Wenn Du aus einer Matrix<T,4,5> auf eine Matrix<T,3,3> zugreifst, dann geht es immer noch nicht, weil es immernoch unterschiedliche Klassen sind. Du kannst aus einem Matrix<T,4,5> -Objekt nur auf private Member von anderen Matrix<T,4,5> -Objekten zugreifen, aber nicht auf private Member von z.B. Matrix<T,3,3> -Objekten. Sobald sein Templateparameter unterschiedlich ist, hast Du auch unterschiedliche Templateklassen.

    ich hab schon abfragen gemacht das es nur eine 3x3 matrix sein kann die da aufgerufen wird. es kann also gar nie eine 4x5 Matrix aufgerufen werden.



  • Dann zeig mal Code her. Am besten welcher, der auch compilierbar ist.



  • close



  • Und das hast du so in der Klasse stehen?

    Edit: übrigens schon wieder cpp-tags vergessen...

    Versuch mal ohne die

    template<...>
    

    vor den Funktionen - angenommen, ich versteh das Konzept

    Und angenommmen, du hast folgendes vor deiner Klasse stehen:

    template<typename T, unsigned int rows, unsigned int cols> 
    class Matrix
    {
    //...
    };
    


  • Also es lag daran das ich Matrix<T,3,3> gesagt hab und das nicht mehr algemeingehalten ist... und deshalb sieht er es irgendwie als neue methode... hab jetzt alles umgestellt und ist jetzt public... aber ich habs mit virtuel bisschen versteckt...

    Naja danke 🙂
    bin so zufrieden.



  • wie close ich den thread?



  • 82kolu schrieb:

    Also es lag daran das ich Matrix<T,3,3> gesagt hab und das nicht mehr algemeingehalten ist... und deshalb sieht er es irgendwie als neue methode... hab jetzt alles umgestellt und ist jetzt public... aber ich habs mit virtuel bisschen versteckt...

    Naja danke 🙂
    bin so zufrieden.

    Der letzte Teil (also Deine Lösung) klingt nicht sehr überzeugend. Der erste Teil ist das, worauf ich versucht habe, Dich hinzuweisen.


Anmelden zum Antworten