float -> float *



    was jetz schon penn?
    ich glaub mein schwein pfeift...
    wie sieht das denn jetzt aus? bei mir funzts net.
    also??@helpa-möchtegern



  • was jetz schon penn?

    Was sagen deine Eltern dazu?

    ich glaub mein schwein pfeift...

    Und du pfeifst aus dem letzten Loch, geh schlafen.

    wie sieht das denn jetzt aus? bei mir funzts net.

    Dann lies dir nen Tut durch, und ersetze deinen C Code mal durch C++ (pale, schweig!)

    also??@helpa-möchtegern

    Die Antwort hatte ich dir schon gegeben!



  • so alda. die lösung hab ich jetz...
    huhu tut gelesen...:)

    naja trotzdem geh ich net penn. eldern sagen nix.. sind schon im bett .hehe.


  • Administrator

    Script-Styler schrieb:

    ich komm net klar!
    was heißt überhaupt dereferieren?
    es geht hier um c++.
    also könnte jemand mir bidde ein funktionierendes beispiel geben.
    dann kapiere ich dat auch.
    thx.

    (D)Evil schrieb:

    void CGamma::get_gamma(float* pfGammaRed, float* pfGammaGreen, float* pfGammaBlue) const
    {
        *pfGammaRed = (static_cast<float>(GammaNow[0]) - 0.5f) * 2.0f;
        *pfGammaGreen = (static_cast<float>(GammaNow[1]) - 0.5f) * 2.0f;
        *pfGammaBlue = (static_cast<float>(GammaNow[2]) - 0.5f) * 2.0f;
    }
    

    ...

    Und hör nicht auf helpa, der hat zig Posts verfasst, aber so gut wie jeder war falsch ^^

    Von welchem Typ ist GammaNow? Je nach dem brauchst du nicht mal das static_cast 😉

    Dereferenzieren heisst vom Zeiger wieder zurück auf das Objekt gehen (Darf man das so sagen? ^^)

    int iObject;
    int* pPointerOnObject = &iObject;
    int iObject2 = *pPointerAufObject; // Der Stern dereferenziert den Zeiger und man hat wieder das Objekt,
    // Also anstatt int* ein int und zwar der auf welcher int* verweist. In diesem Beispiel wäre das iObject
    

    Würde dir aber empfehlen den Teil mit den Zeigern nochmals zu lesen oder folgender Artikel:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-124532.html

    Edit: Mist, in letzter Zeit bin ich aber wirklich immer zu spät. ^^"

    Grüssli



  • Und hör nicht auf helpa, der hat zig Posts verfasst, aber so gut wie jeder war falsch ^^

    Na, einbisschen Leichtsinnigkeit ist doch jedem erlaubt 🙂 (D)evil seiner war doch auch falsch.



  • Oha? War er das? mir nicht bekannt. 🙄



  • mein gott... ist doch egal! ich hab die lösung.

    int CGamma::GetGamma(float* fGammaRed,float* fGammaGreen,float* fGammaBlue)
    {
    	*fGammaRed = (((float)GammaNow[0]-(float)0.5)*(float)2);
    	*fGammaGreen = (((float)GammaNow[1]-(float)0.5)*(float)2);
    	*fGammaBlue = (((float)GammaNow[2]-(float)0.5)*(float)2);
    	return 1;
    }
    

    so thx! das funzt.
    also wen helpa mich nicht zum tut lesen gebracht hätte, wüsste ich immer noch net, wie das geht...^^thx.

    @helpa: naja diese gamma klasse ist nicht nur!! für mein Nervtool geeignet.
    man kann damit einfach die Gamma verstellen und das einzeln für die farben.
    damit kann man so blink-flashs erzeugen.^^ für mein nervtool. hehe.



  • siehste, ich habe im Grunde nur zwei Klammern vergessen, dich aber trotzdem auf die richtige Spur geleitet. Danke, dass du mir trotzdem soviel Höflichkeit entgegenbringst 😃

    @helpa: naja diese gamma klasse ist nicht nur!! für mein Nervtool geeignet.
    man kann damit einfach die Gamma verstellen und das einzeln für die farben.
    damit kann man so blink-flashs erzeugen.^^ für mein nervtool. hehe.

    jaja, blinki blinki. Okay, bei 15 Jahren kann ich das noch nachvollziehen.



  • und man kann das dann andern leuten andrehn. z.b. im internetkafee.
    da war ich ma, da hatte man admin-rechte!!!



  • Soo ... um das hier mal korrekt zu machen:

    ...und da es um C und nicht C++ geht, lass mal die static_casts weg, und nimm die vorherige Lösung mit den (float). Die Variablen musst du aber weiterhin dereferenzieren.

    ... Ja ist klar. Zeig dein Geistiges Niveau und glaub das C objektorientiert ist ... (Klassen ...)

    (float)0.5
    

    vollkommen unnötiger, unperformanter cast. Warum nicht direkt 0.5 als Fließkommazahl angeben?

    0.5f
    

    ...

    (float)2
    

    Das er einen Integer nicht ohne weiteres als float ansieht, müsste dir auch klar sein... 0.5 war ja ein double-Wert. Aber korrekt ist auch hier:

    2.0f
    
    (float)GammaNow[0]
    

    C-Style-Cast ... vollkommen unschön, wenn du C++ programmieren willst.

    float*
    

    C++ kennt Referenzen!

    return 1;
    

    Wofür etwas zurückgeben, wenn bei der Funktion nichts schief gehen kann? Also Rückgabewert void.

    =>

    void CGamma::get_gamma(float& red, float& green, float& blue) const // const, da du keine Membervariablen veränderst!
    {
        red = (static_cast<float>(GammaNow[0]) - 0.5f) * 2.0f;
        green = (static_cast<float>(GammaNow[1]) - 0.5f) * 2.0f;
        blue = (static_cast<float>(GammaNow[2]) - 0.5f) * 2.0f;
    }
    

    ...

    Und helpa ... zügel mal ein wenig dein loses Mundwerk... wenn man schon so wenig Ahnung hat.
    Script-Styler: nimm nicht alles als bare Münze, was von Gästen in diesem Forum geschrieben wird!


Anmelden zum Antworten