Mehrere Varaiblen impliziet in Klasse umwandeln
-
Was ist daran falsch?
class foo { public: foo(int a,bool b); }; void testfunc(foo& f) { }; int main() { testfunc(4,true); };
(Ist natürlich nicht mein echter code, hoffe das Problem besteht trotzdem...)
-
Dass das nicht geht, ist das Problem :p Typumwandlungen wandeln genau einen Wert in einen anderen um. Was du machen willst ist schlicht und ergreifend nicht vorgesehen.
-
shit, meine ganze Planung im A...
-
So, hab mich wieder etwas beruhigt. Gibt es ne Möglichkeit, das umzusetzen, one den "Client code" zu ändern? (*stumm die Hände falt*)
-
Vielleicht:
void func(const Foo&); template<class A1,class A2> void func(const A1&a1,const A2&a2) { func(Foo(a1,a2)); }
Ungetestet
-
wozu der ganze template drumherum ?
ein einfachesfunc(Foo(a1,a2));
tuts doch auch
-
das will er aber nicht
-
Ben04 schrieb:
Vielleicht:
void func(const Foo&); template<class A1,class A2> void func(const A1&a1,const A2&a2) { func(Foo(a1,a2)); }
Ungetestet
Und was wenn ich nicht weiß, wieviele templateparameter ich benötige?(Z.B.:
template<class TList> func(//und nun? ){}; //Aufrufer: func<TYPELIST_4(int,double,char,unsigned)>(4,3.25,'D',12);
-
Bau halt mehrere templates. Eins für 1 Parameter, eins für zwei etc. so viele Du brauchst. ielleicht kannst Du die auch irgendwie generieren lassen.
Sonst mußt Du halt doch jedesmal den Client anpassen.
MfG Jester
-
@ness
ich würde so etwas nicht machen. Das kann den Code relativ unverständlich und kompliziert machen. Warum keinen Ctor aufruf?
-
@kingruedi: Wie würdest du es machen. Die Klasse ist eigentlich nur ein Umweg, über den ich versucht habe mehrere Parameter generieren zu lassen. Genau genommen ist das ne partiell spezialisiertes rekursives template, das instanzen "von sich selbst" enthält.