Hier is eigenlijk wat ik wil doen:
Dit compileert niet aangezien voor andere klassen dan otherclass "id" niet bestaat, en de compiler zeurt. Ik dacht aan het specialiseren van de functie, maar zonder parameters van die type werkt het ook niet. De base klasse wil ik niet templatisen. Heeft iemand enig idee hoe ik zoiets zou kunnen oplossen? Heb al gekeken naar BOOST me BOOST_TYPEOF, en boost::is_same<>, maar ze geven alleen maar of types terug of compile-time asserts. Maar misschien mis ik iets.
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| class base { public: void function(int) = 0; }; template <class T> myclass: public base { public: void function(int) { otherclass* i = somevalue_from_somewhere. if (typeof(T) == otherclass) { somevalue = i.id; } else { somevalue = 0; } } |
Dit compileert niet aangezien voor andere klassen dan otherclass "id" niet bestaat, en de compiler zeurt. Ik dacht aan het specialiseren van de functie, maar zonder parameters van die type werkt het ook niet. De base klasse wil ik niet templatisen. Heeft iemand enig idee hoe ik zoiets zou kunnen oplossen? Heb al gekeken naar BOOST me BOOST_TYPEOF, en boost::is_same<>, maar ze geven alleen maar of types terug of compile-time asserts. Maar misschien mis ik iets.
[ Voor 3% gewijzigd door Darkvater op 09-04-2009 13:48 ]
Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge