Musta tuntuu, että tää on mahdollista c++:lla, mutta en oo varma. Oon yrittänyt ratkaista tätä mallien avulla, mutta tullu siihen johtopäätökseen, etteivät ne riitä, joten virtuaalifunktioiden pitäisi luullakseni olla ratkaisu ongelmaan. Osaan molemmista perusteet
Haluaisin tehdä luokan, johon voi registeröidä muuttujia funktiolla. Eli funktio ottaisi parametrikseen muuttujan osoitteen ja tyypin. Ei kuitenkaan niin, että tyyppi välitettäisiin jonain kokonaislukuarvona, josta sitten voitaisiin myöhemmin päätellä muuttujan tyyppi.
Muuttujat olisi kiva saada tallennettua johonkin kätevään tietorakenteeseen(vaikka jonkin asteinen taulukko), jotta niiden jatkokäsittely olisi mahdollisimman vaivatonta.
Registeröidyillä muuttujilla pitäisi myöhemmin pystyä laskemaan riippumatta niiden tyypeistä ilman, että jouduttaisiin käyttämään erinäisiä ikäviä valintarakenteita.
Jos tämä yleensä on mahdollista, olisi kiva, jos saisin esimerkit registeröinnistä, säilytyksestä ja laskemisesta.
Huom: Idea nimenomaan on olla käyttämättä laskentavaiheessa mitään valintarakenteita erilaisten muuttujatyyppien käsittelytapojen välillä.
PS. Koittakaa itse keksiä parempi otsikko :|
Vähän abstrakti kysymys. Periaatteessa tämä ratkeaisi periyttämällä kaikki muuttujatyypit jostain yläluokasta, joka määrittelisi (puhtaan) virtuaalisen jäsenfunktion haluamaasi laskentaa varten. Rekisteröintifunktio ottaisi tällöin parametrikseen osoittimen johonkin tämän yläluokan perivään olioon ja kutsuisi laskentavaiheessa osoittimen kautta tuota jäsenfunktiota. Koska jäsenfunktio on virtuaalinen, kutsu ohjautuu polymorfismin ansioista olion todellisen luokan koodiin.
Ratkaisu monimutkaistuu, jos haluat rekisteröidä vaikkapa int-muuttujia, koska nehän eivät automaattisesti tietenkään peri mitään luokkaa. Ne täytyy tallentaa johonkin apuolioon.
Muista sitten myös poistaa rekisteröimäsi osoitteet tietorakenteesta ennen kuin palautat olioiden varaaman muistin järjestelmälle. Olioista voisi tarpeen vaatiessa tehdä niinkin viisaita, että ne tietäisivät mihin niitä on rekisteröity, jolloin ne voisivat poistaa viitteet itseensä näistä tietorakenteista vaikkapa yläluokan destruktorissa.
Jep, tajusin idean. Nyt pitäisi onnistua omin avuin.
Kiitokset vastauksesta!
Aihe on jo aika vanha, joten et voi enää vastata siihen.