Ik wil gewoon voor mijzelf een soort handler maken voor het uitlezen van bepaalde datatypen uit bepaalde objecten zoals een TEditBox...
Nu weet ik dat je met een template functie de return waarde kan kan bepalen, maar daar zit 1 probleempje aan... Dat desbetreffende datatype moet bepaald zijn in de argumenten van de functie... (Anders weet de functie immers niet wat voor een datatype hij moet returnen)
Dit vind ik een beetje "statisch" als het ware... Want het moment dat jij zegt:
Type varnaam = functie(argumenten); weet de funtie in feite al wat hij moet leveren.
Stel ik wil het volgende doen:
Uiteraard klopt dit voor geen ene meter... Het is slechts een indicatie wat betreft hoe ik het zou willen.
Bestaat er nou een manier om typename T toch de definieren zonder het mee te hoeven te geven in één van de argumenten?
En indien niet, kan ik dan met een typename T argument een operatie uitvoeren als
Nu weet ik dat je met een template functie de return waarde kan kan bepalen, maar daar zit 1 probleempje aan... Dat desbetreffende datatype moet bepaald zijn in de argumenten van de functie... (Anders weet de functie immers niet wat voor een datatype hij moet returnen)
Dit vind ik een beetje "statisch" als het ware... Want het moment dat jij zegt:
Type varnaam = functie(argumenten); weet de funtie in feite al wat hij moet leveren.
Stel ik wil het volgende doen:
C++:
1
2
3
4
5
6
7
8
9
10
| template <typename T> T LeesEditBox(TEdit* Edit, String Type /*etc. etc..*/) { if(Type="String") // doe de string handling return String; else if (Type = "int") // doe de int handling return int; // etc etc etc } |
Uiteraard klopt dit voor geen ene meter... Het is slechts een indicatie wat betreft hoe ik het zou willen.
Bestaat er nou een manier om typename T toch de definieren zonder het mee te hoeven te geven in één van de argumenten?
En indien niet, kan ik dan met een typename T argument een operatie uitvoeren als
C++:
1
2
3
4
5
6
7
| template <typename T> T LeesEditBox(TEdit* Edit,T Type /*etc. etc..*/) { if(Type.IsInt) //int handler return int; // etc etc etc } |
We live in a primitive time don't we, neither savage nor wise. Half measures are the curse of it; any rational society would either kill me or put me to some use.