Hallo,
Voor een schoolopdracht moet ik een eenvoudig programma schrijven rond een bijgelevede library die wat outputfuncties voor de console verzorgt. Dit is echter gebaseerd op windows.h; dus heb ik besloten om een identieke API te schrijven gebaseerd op ncurses.
Een probleem waar ik daarbij op stoot, is dat na elke "cout" een ncurses refresh() zou moeten gecallt worden. Het lukt echter niet goed om dit op te lossen. Heeft iemand een idee hoe ik "cout" verander zodat er een "refresh()" call gebeurt na elke output?
Zelf had ik er aan gedacht om wrapper cout functie te schrijven, die dan de echte cout callt, maar er een refresh achter plaatst. Om cout's flexibiliteit te bewaren, zou ik dus een functie moeten schrijven waarbij de operator "<<" ondersteund wordt. In principe is dit niet zo moeilijk, zeker niet via C++'s <template> systeem, maar ik vind niet hoe ik een operator aan een functie bind (voorbeelden spreken enkel van operator overloading aan class objects). Ik een klasse zou ik het volgende doen:
waarbij serverLinuxTCP een klasse is die ik ervoor gedefinieerd heb (code fragmentje komt uit een library die ik vroeger geschreven heb).
Is het mogelijk om een operator te binden aan een reguliere functie? En kan ik een wrapper schrijven rond de bestaande "cout" functie, en daarbij de standaard cout syntax gebruiken?
Bedankt voor alle hints qua implementatie, of hoe ik vermelde problemen met mijn eigen implementatie oplos
maleadt
Voor een schoolopdracht moet ik een eenvoudig programma schrijven rond een bijgelevede library die wat outputfuncties voor de console verzorgt. Dit is echter gebaseerd op windows.h; dus heb ik besloten om een identieke API te schrijven gebaseerd op ncurses.
Een probleem waar ik daarbij op stoot, is dat na elke "cout" een ncurses refresh() zou moeten gecallt worden. Het lukt echter niet goed om dit op te lossen. Heeft iemand een idee hoe ik "cout" verander zodat er een "refresh()" call gebeurt na elke output?
Zelf had ik er aan gedacht om wrapper cout functie te schrijven, die dan de echte cout callt, maar er een refresh achter plaatst. Om cout's flexibiliteit te bewaren, zou ik dus een functie moeten schrijven waarbij de operator "<<" ondersteund wordt. In principe is dit niet zo moeilijk, zeker niet via C++'s <template> systeem, maar ik vind niet hoe ik een operator aan een functie bind (voorbeelden spreken enkel van operator overloading aan class objects). Ik een klasse zou ik het volgende doen:
C++:
1
| const serverLinuxTCP& serverLinuxTCP::operator << ( const std::string& s ) const |
waarbij serverLinuxTCP een klasse is die ik ervoor gedefinieerd heb (code fragmentje komt uit een library die ik vroeger geschreven heb).
Is het mogelijk om een operator te binden aan een reguliere functie? En kan ik een wrapper schrijven rond de bestaande "cout" functie, en daarbij de standaard cout syntax gebruiken?
Bedankt voor alle hints qua implementatie, of hoe ik vermelde problemen met mijn eigen implementatie oplos
maleadt