C++ jelppiä

koodinpariin

Mitenkäs C tehdään sellainen kun haluan että luokassa määriteltyä muuttujaa muutettaessa kutsutaan automaattisesti luokan funktiota.
Ulospäin siis näkyisi kuin muuttuja mutta sisäisesti temppu olisi funkiokutsu.

En muista millä tätä kutsuttiin joten enpä löydä kirjoista tai netistä apuja.

11

224

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Operator overloading

    • Yvubinokokok

      Function object.

    • Sekaannus-varmaan

      ("En muista millä tätä kutsuttiin joten enpä löydä kirjoista tai netistä apuja.")

      eikä ihmekkään, koska sellaista ei ole.

      Linux Mint 18.1 Serena
      Xfce 64-bit

      • sitätarvitaan

        Ehkä aloittelija voisi täsmentää ongelmaansa.


    • koodinpariin

      Kuvasin kyllä jo tuossa aloituksessa asian :-)
      Olisi vaan niin näppärää pistää muuttujan muuttamiseen sidottu rutiini tekemään asioita mitkä nyt pitää tehdä funktiokutsulla.
      Jotenkin muistelin että tällainen olisi kielessä. Siitä kun viimeksi tuli C koodailtua (työksi) on jo yli 25v joten ihan ei kaikkea syntaksista muista.

      • rekursiivinen-funktio

        Ainut mitä minulle tulee mieleen on rekursiivinen aliohjelma tai funktio joko kutsuu itseään. Tarpeen kun esimerkiksi suoritetaan kasiorakenteen sisällä tiedoston hakua. On vaan mahoton muistisyöppö, koska funktio kutsu saa prosessorin latomaan pinoon kuilloinkin voimassa olevien rekistereiden sisällön ja paluu osoitteet. No ehkä ei enään nykyään törmään pinonylivuoto virheeseen, mutta ennen se oli varottavissa ja oli pakko ottaa huomioon missä käytti ja missä ei.


        Linux Mint 18.1 Sarah
        Xfce 64-bit


      • Oligo

        Tarkoitatko sijoitusoperaattoria?


      • Tuolla-noin-hyvin

    • pcmuseo
    • koodinpariin

      Kiitokset vinkistä operaattorin overload-käyttöön.

      Alla oleva kyhäelmäni tuntuu toimivan mutta vielä jää ongelmaksi että pitäisi saada samalla lailla toisinpäinen sijoitus niin että obj1 voisi suoraan sijoittaa integeriin ilman pakollista viittaamista pistenotaatiolla luokan sisäiseen muuttujaan.


      #include "stdafx.h"
      #include <iostream>

      class example
      {
      public:
      int a;
      void operator=(int aaa);
      };

      void example::operator=(int aaa)
      {
      (*this).a = aaa;
      std::cout<<"kukkuu\n";
      }

      int _tmain(int argc, _TCHAR* argv[])
      {
      int bbb=100;
      example obj1;

      obj1 = bbb; // tulostaa kukkuu
      std::cout<<obj1.a ;

      for(;1;);
      }

    • koodinpariin

      Pitääpä ottaa takaisin. Sain ratkaistua toisin päin sijoitusongelmankin.
      Nyt esimerkkiluokkaan voi sijoittaa integerin ja se laukaisee funktion.
      Lisäksi luokan voi suoraan sijoittaa integeriin ja se laukaisee toisen funktion.
      Nyt voin tehdä vanhaan koodiin näppärän lisän ilman toimivan koko koodin muuttamista.
      Kiitokset vielä kerran overload-operaattorivinkeistä.

      #include "stdafx.h"
      #include <iostream>

      class example
      {
      public:
      int a;
      void operator=(int aaa)
      {
      (*this).a = aaa;
      std::cout<<"kukkuu\n";
      }

      operator int() const
      {
      std::cout<<"kiekuu\n";
      return a;
      }
      };


      int _tmain(int argc, _TCHAR* argv[])
      {

      int bbb=100;
      example obj1;

      obj1 = bbb;
      std::cout<<obj1.a <<"\n" ;

      obj1.a=123;

      bbb=obj1;

      std::cout<<bbb;

      for(;1;);

      }

    Ketjusta on poistettu 1 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. YLE Äänekosken kaupunginjohtaja saa ankaraa arvostelua

      Kaupungin johtaja saa ankaraa kritiikkiä äkkiväärästä henkilöstöjohtamisestaan. Uusin häirintäilmoitus päivätty 15 kesä
      Äänekoski
      81
      1588
    2. Euroopan lämpöennätys, 48,8, astetta, on mitattu Italian Sisiliassa

      Joko hitaampikin ymmärtää. Se on aivan liikaa. Ilmastonmuutos on totta Euroopassakin.
      Maailman menoa
      267
      1516
    3. Asiakas iski kaupassa varastelua tehneen kanveesiin.

      https://www.iltalehti.fi/kotimaa/a/33a85463-e4d5-45ed-8014-db51fe8079ec Oikein. Näin sitä pitää. Kyllä kaupoissa valtava
      Maailman menoa
      266
      1242
    4. Martina lähdössä Ibizalle

      Eikä Eskokaan tiennyt matkasta. Nyt ollaan jännän äärellä.
      Kotimaiset julkkisjuorut
      169
      1242
    5. Avustikset peruttu.

      Aettokosken ampuraan rahat otettu poekkeen valtiolle.
      Suomussalmi
      56
      857
    6. 65
      834
    7. Jos ei tiedä mitä toisesta haluaa

      Älä missään nimessä anna mitään merkkejä kiinnostuksesta. Ole haluamatta mitään. Täytyy ajatella toistakin. Ei kukaan em
      Ikävä
      64
      817
    8. Miksi mies tuntee näin?

      Eli olen mies ja ihastuin naiseen. Tykkään hänestä ja koskaan hän ei ole ollut minulle ilkeä. Silti ajoittain tunnen kui
      Ikävä
      40
      811
    9. Se nainen näyttää hyvältä vaikka painaisi 150kg

      parempi vaan jos on vähän muhkeammassa kunnossa 🤤
      Ikävä
      44
      771
    10. Määpä tiijän että rakastat

      Minua nimittäin. Samoin hei! Olet mun vastakappaleeni.
      Ikävä
      37
      767
    Aihe